1 /* Parse and display command line options.
2 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
4 Free Software Foundation, Inc.
5 Contributed by Andy Vaught
7 This file is part of GCC.
9 GCC is free software; you can redistribute it and/or modify it under
10 the terms of the GNU General Public License as published by the Free
11 Software Foundation; either version 3, or (at your option) any later
14 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
15 WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19 You should have received a copy of the GNU General Public License
20 along with GCC; see the file COPYING3. If not see
21 <http://www.gnu.org/licenses/>. */
25 #include "coretypes.h"
32 #include "tree-inline.h"
36 #include "toplev.h" /* For sorry. */
39 gfc_option_t gfc_option;
42 /* Set flags that control warnings and errors for different
43 Fortran standards to their default values. Keep in sync with
44 libgfortran/runtime/compile_options.c (init_compile_options). */
47 set_default_std_flags (void)
49 gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95_DEL
50 | GFC_STD_F2003 | GFC_STD_F2008 | GFC_STD_F95 | GFC_STD_F77
51 | GFC_STD_GNU | GFC_STD_LEGACY;
52 gfc_option.warn_std = GFC_STD_F95_DEL | GFC_STD_LEGACY;
56 /* Get ready for options handling. Keep in sync with
57 libgfortran/runtime/compile_options.c (init_compile_options). */
60 gfc_init_options (unsigned int argc, const char **argv)
62 gfc_source_file = NULL;
63 gfc_option.module_dir = NULL;
64 gfc_option.source_form = FORM_UNKNOWN;
65 gfc_option.fixed_line_length = 72;
66 gfc_option.free_line_length = 132;
67 gfc_option.max_continue_fixed = 255;
68 gfc_option.max_continue_free = 255;
69 gfc_option.max_identifier_length = GFC_MAX_SYMBOL_LEN;
70 gfc_option.max_subrecord_length = 0;
71 gfc_option.flag_max_array_constructor = 65535;
72 gfc_option.convert = GFC_CONVERT_NATIVE;
73 gfc_option.record_marker = 0;
74 gfc_option.dump_parse_tree = 0;
76 gfc_option.warn_aliasing = 0;
77 gfc_option.warn_ampersand = 0;
78 gfc_option.warn_character_truncation = 0;
79 gfc_option.warn_array_temp = 0;
80 gfc_option.warn_conversion = 0;
81 gfc_option.warn_conversion_extra = 0;
82 gfc_option.warn_implicit_interface = 0;
83 gfc_option.warn_line_truncation = 0;
84 gfc_option.warn_surprising = 0;
85 gfc_option.warn_tabs = 1;
86 gfc_option.warn_underflow = 1;
87 gfc_option.warn_intrinsic_shadow = 0;
88 gfc_option.warn_intrinsics_std = 0;
89 gfc_option.warn_align_commons = 1;
90 gfc_option.warn_unused_dummy_argument = 0;
91 gfc_option.max_errors = 25;
93 gfc_option.flag_all_intrinsics = 0;
94 gfc_option.flag_default_double = 0;
95 gfc_option.flag_default_integer = 0;
96 gfc_option.flag_default_real = 0;
97 gfc_option.flag_dollar_ok = 0;
98 gfc_option.flag_underscoring = 1;
99 gfc_option.flag_whole_file = 0;
100 gfc_option.flag_f2c = 0;
101 gfc_option.flag_second_underscore = -1;
102 gfc_option.flag_implicit_none = 0;
104 /* Default value of flag_max_stack_var_size is set in gfc_post_options. */
105 gfc_option.flag_max_stack_var_size = -2;
107 gfc_option.flag_range_check = 1;
108 gfc_option.flag_pack_derived = 0;
109 gfc_option.flag_repack_arrays = 0;
110 gfc_option.flag_preprocessed = 0;
111 gfc_option.flag_automatic = 1;
112 gfc_option.flag_backslash = 0;
113 gfc_option.flag_module_private = 0;
114 gfc_option.flag_backtrace = 0;
115 gfc_option.flag_allow_leading_underscore = 0;
116 gfc_option.flag_dump_core = 0;
117 gfc_option.flag_external_blas = 0;
118 gfc_option.blas_matmul_limit = 30;
119 gfc_option.flag_cray_pointer = 0;
120 gfc_option.flag_d_lines = -1;
121 gfc_option.flag_openmp = 0;
122 gfc_option.flag_sign_zero = 1;
123 gfc_option.flag_recursive = 0;
124 gfc_option.flag_init_integer = GFC_INIT_INTEGER_OFF;
125 gfc_option.flag_init_integer_value = 0;
126 gfc_option.flag_init_real = GFC_INIT_REAL_OFF;
127 gfc_option.flag_init_logical = GFC_INIT_LOGICAL_OFF;
128 gfc_option.flag_init_character = GFC_INIT_CHARACTER_OFF;
129 gfc_option.flag_init_character_value = (char)0;
130 gfc_option.flag_align_commons = 1;
131 gfc_option.flag_protect_parens = 1;
134 gfc_option.rtcheck = 0;
135 gfc_option.coarray = GFC_FCOARRAY_NONE;
138 flag_associative_math = -1;
140 set_default_std_flags ();
142 /* -fshort-enums can be default on some targets. */
143 flag_short_enums = targetm.default_short_enums ();
145 /* Initialize cpp-related options. */
146 gfc_cpp_init_options(argc, argv);
152 /* Determine the source form from the filename extension. We assume
153 case insensitivity. */
155 static gfc_source_form
156 form_from_filename (const char *filename)
160 const char *extension;
161 gfc_source_form form;
188 }; /* sentinel value */
190 gfc_source_form f_form;
194 /* Find end of file name. Note, filename is either a NULL pointer or
195 a NUL terminated string. */
197 while (filename[i] != '\0')
200 /* Find last period. */
201 while (i >= 0 && (filename[i] != '.'))
204 /* Did we see a file extension? */
206 return FORM_UNKNOWN; /* Nope */
208 /* Get file extension and compare it to others. */
209 fileext = &(filename[i]);
212 f_form = FORM_UNKNOWN;
216 if (strcasecmp (fileext, exttype[i].extension) == 0)
218 f_form = exttype[i].form;
222 while (exttype[i].form != FORM_UNKNOWN);
228 /* Finalize commandline options. */
231 gfc_post_options (const char **pfilename)
233 const char *filename = *pfilename, *canon_source_file = NULL;
237 /* Excess precision other than "fast" requires front-end
239 if (flag_excess_precision_cmdline == EXCESS_PRECISION_STANDARD
240 && TARGET_FLT_EVAL_METHOD_NON_DEFAULT)
241 sorry ("-fexcess-precision=standard for Fortran");
242 flag_excess_precision_cmdline = EXCESS_PRECISION_FAST;
244 /* Whole program needs whole file mode. */
245 if (flag_whole_program)
246 gfc_option.flag_whole_file = 1;
248 /* Enable whole-file mode if LTO is in effect. */
249 if (flag_lto || flag_whopr)
250 gfc_option.flag_whole_file = 1;
252 /* Fortran allows associative math - but we cannot reassociate if
253 we want traps or signed zeros. Cf. also flag_protect_parens. */
254 if (flag_associative_math == -1)
255 flag_associative_math = (!flag_trapping_math && !flag_signed_zeros);
257 /* -fbounds-check is equivalent to -fcheck=bounds */
258 if (flag_bounds_check)
259 gfc_option.rtcheck |= GFC_RTCHECK_BOUNDS;
261 if (flag_compare_debug)
262 gfc_option.dump_parse_tree = 0;
264 /* Verify the input file name. */
265 if (!filename || strcmp (filename, "-") == 0)
270 if (gfc_option.flag_preprocessed)
272 /* For preprocessed files, if the first tokens are of the form # NUM.
273 handle the directives so we know the original file name. */
274 gfc_source_file = gfc_read_orig_filename (filename, &canon_source_file);
275 if (gfc_source_file == NULL)
276 gfc_source_file = filename;
278 *pfilename = gfc_source_file;
281 gfc_source_file = filename;
283 if (canon_source_file == NULL)
284 canon_source_file = gfc_source_file;
286 /* Adds the path where the source file is to the list of include files. */
288 i = strlen (canon_source_file);
289 while (i > 0 && !IS_DIR_SEPARATOR (canon_source_file[i]))
294 source_path = (char *) alloca (i + 1);
295 memcpy (source_path, canon_source_file, i);
297 gfc_add_include_path (source_path, true, true);
300 gfc_add_include_path (".", true, true);
302 if (canon_source_file != gfc_source_file)
303 gfc_free (CONST_CAST (char *, canon_source_file));
305 /* Decide which form the file will be read in as. */
307 if (gfc_option.source_form != FORM_UNKNOWN)
308 gfc_current_form = gfc_option.source_form;
311 gfc_current_form = form_from_filename (filename);
313 if (gfc_current_form == FORM_UNKNOWN)
315 gfc_current_form = FORM_FREE;
316 gfc_warning_now ("Reading file '%s' as free form",
317 (filename[0] == '\0') ? "<stdin>" : filename);
321 /* If the user specified -fd-lines-as-{code|comments} verify that we're
323 if (gfc_current_form == FORM_FREE)
325 if (gfc_option.flag_d_lines == 0)
326 gfc_warning_now ("'-fd-lines-as-comments' has no effect "
328 else if (gfc_option.flag_d_lines == 1)
329 gfc_warning_now ("'-fd-lines-as-code' has no effect in free form");
332 /* If -pedantic, warn about the use of GNU extensions. */
333 if (pedantic && (gfc_option.allow_std & GFC_STD_GNU) != 0)
334 gfc_option.warn_std |= GFC_STD_GNU;
335 /* -std=legacy -pedantic is effectively -std=gnu. */
336 if (pedantic && (gfc_option.allow_std & GFC_STD_LEGACY) != 0)
337 gfc_option.warn_std |= GFC_STD_F95_OBS | GFC_STD_F95_DEL | GFC_STD_LEGACY;
339 /* If the user didn't explicitly specify -f(no)-second-underscore we
340 use it if we're trying to be compatible with f2c, and not
342 if (gfc_option.flag_second_underscore == -1)
343 gfc_option.flag_second_underscore = gfc_option.flag_f2c;
345 if (!gfc_option.flag_automatic && gfc_option.flag_max_stack_var_size != -2
346 && gfc_option.flag_max_stack_var_size != 0)
347 gfc_warning_now ("Flag -fno-automatic overwrites -fmax-stack-var-size=%d",
348 gfc_option.flag_max_stack_var_size);
349 else if (!gfc_option.flag_automatic && gfc_option.flag_recursive)
350 gfc_warning_now ("Flag -fno-automatic overwrites -frecursive");
351 else if (!gfc_option.flag_automatic && gfc_option.flag_openmp)
352 gfc_warning_now ("Flag -fno-automatic overwrites -frecursive implied by "
354 else if (gfc_option.flag_max_stack_var_size != -2
355 && gfc_option.flag_recursive)
356 gfc_warning_now ("Flag -frecursive overwrites -fmax-stack-var-size=%d",
357 gfc_option.flag_max_stack_var_size);
358 else if (gfc_option.flag_max_stack_var_size != -2
359 && gfc_option.flag_openmp)
360 gfc_warning_now ("Flag -fmax-stack-var-size=%d overwrites -frecursive "
361 "implied by -fopenmp",
362 gfc_option.flag_max_stack_var_size);
364 /* Implement -frecursive as -fmax-stack-var-size=-1. */
365 if (gfc_option.flag_recursive)
366 gfc_option.flag_max_stack_var_size = -1;
368 /* Implied -frecursive; implemented as -fmax-stack-var-size=-1. */
369 if (gfc_option.flag_max_stack_var_size == -2 && gfc_option.flag_openmp
370 && gfc_option.flag_automatic)
372 gfc_option.flag_recursive = 1;
373 gfc_option.flag_max_stack_var_size = -1;
377 if (gfc_option.flag_max_stack_var_size == -2)
378 gfc_option.flag_max_stack_var_size = 32768;
380 /* Implement -fno-automatic as -fmax-stack-var-size=0. */
381 if (!gfc_option.flag_automatic)
382 gfc_option.flag_max_stack_var_size = 0;
386 gfc_option.warn_ampersand = 1;
387 gfc_option.warn_tabs = 0;
390 if (pedantic && gfc_option.flag_whole_file)
391 gfc_option.flag_whole_file = 2;
393 gfc_cpp_post_options ();
395 /* FIXME: return gfc_cpp_preprocess_only ();
397 The return value of this function indicates whether the
398 backend needs to be initialized. On -E, we don't need
399 the backend. However, if we return 'true' here, an
400 ICE occurs. Initializing the backend doesn't hurt much,
401 hence, for now we can live with it as is. */
406 /* Set the options for -Wall. */
409 set_Wall (int setting)
411 gfc_option.warn_aliasing = setting;
412 gfc_option.warn_ampersand = setting;
413 gfc_option.warn_conversion = setting;
414 gfc_option.warn_line_truncation = setting;
415 gfc_option.warn_surprising = setting;
416 gfc_option.warn_tabs = !setting;
417 gfc_option.warn_underflow = setting;
418 gfc_option.warn_intrinsic_shadow = setting;
419 gfc_option.warn_intrinsics_std = setting;
420 gfc_option.warn_character_truncation = setting;
421 gfc_option.warn_unused_dummy_argument = setting;
423 warn_unused = setting;
424 warn_return_type = setting;
425 warn_switch = setting;
426 warn_uninitialized = setting;
431 gfc_handle_module_path_options (const char *arg)
434 if (gfc_option.module_dir != NULL)
435 gfc_fatal_error ("gfortran: Only one -J option allowed");
437 gfc_option.module_dir = (char *) gfc_getmem (strlen (arg) + 2);
438 strcpy (gfc_option.module_dir, arg);
439 strcat (gfc_option.module_dir, "/");
441 gfc_add_include_path (gfc_option.module_dir, true, false);
446 gfc_handle_fpe_trap_option (const char *arg)
448 int result, pos = 0, n;
449 static const char * const exception[] = { "invalid", "denormal", "zero",
450 "overflow", "underflow",
452 static const int opt_exception[] = { GFC_FPE_INVALID, GFC_FPE_DENORMAL,
453 GFC_FPE_ZERO, GFC_FPE_OVERFLOW,
454 GFC_FPE_UNDERFLOW, GFC_FPE_PRECISION,
462 while (arg[pos] && arg[pos] != ',')
466 for (n = 0; exception[n] != NULL; n++)
468 if (exception[n] && strncmp (exception[n], arg, pos) == 0)
470 gfc_option.fpe |= opt_exception[n];
478 gfc_fatal_error ("Argument to -ffpe-trap is not valid: %s", arg);
484 gfc_handle_coarray_option (const char *arg)
486 if (strcmp (arg, "none") == 0)
487 gfc_option.coarray = GFC_FCOARRAY_NONE;
488 else if (strcmp (arg, "single") == 0)
489 gfc_option.coarray = GFC_FCOARRAY_SINGLE;
491 gfc_fatal_error ("Argument to -fcoarray is not valid: %s", arg);
496 gfc_handle_runtime_check_option (const char *arg)
498 int result, pos = 0, n;
499 static const char * const optname[] = { "all", "bounds", "array-temps",
500 "recursion", "do", "pointer",
502 static const int optmask[] = { GFC_RTCHECK_ALL, GFC_RTCHECK_BOUNDS,
503 GFC_RTCHECK_ARRAY_TEMPS,
504 GFC_RTCHECK_RECURSION, GFC_RTCHECK_DO,
505 GFC_RTCHECK_POINTER, GFC_RTCHECK_MEM,
513 while (arg[pos] && arg[pos] != ',')
517 for (n = 0; optname[n] != NULL; n++)
519 if (optname[n] && strncmp (optname[n], arg, pos) == 0)
521 gfc_option.rtcheck |= optmask[n];
529 gfc_fatal_error ("Argument to -fcheck is not valid: %s", arg);
534 /* Handle command-line options. Returns 0 if unrecognized, 1 if
535 recognized and handled. */
538 gfc_handle_option (size_t scode, const char *arg, int value,
539 int kind ATTRIBUTE_UNUSED)
542 enum opt_code code = (enum opt_code) scode;
544 /* Ignore file names. */
548 if (gfc_cpp_handle_option (scode, arg, value) == 1)
562 gfc_option.warn_aliasing = value;
566 gfc_option.warn_ampersand = value;
569 case OPT_Warray_temporaries:
570 gfc_option.warn_array_temp = value;
573 case OPT_Wcharacter_truncation:
574 gfc_option.warn_character_truncation = value;
577 case OPT_Wconversion:
578 gfc_option.warn_conversion = value;
581 case OPT_Wconversion_extra:
582 gfc_option.warn_conversion_extra = value;
585 case OPT_Wimplicit_interface:
586 gfc_option.warn_implicit_interface = value;
589 case OPT_Wimplicit_procedure:
590 gfc_option.warn_implicit_procedure = value;
593 case OPT_Wline_truncation:
594 gfc_option.warn_line_truncation = value;
597 case OPT_Wreturn_type:
598 warn_return_type = value;
601 case OPT_Wsurprising:
602 gfc_option.warn_surprising = value;
606 gfc_option.warn_tabs = value;
610 gfc_option.warn_underflow = value;
613 case OPT_Wintrinsic_shadow:
614 gfc_option.warn_intrinsic_shadow = value;
617 case OPT_Walign_commons:
618 gfc_option.warn_align_commons = value;
621 case OPT_Wunused_dummy_argument:
622 gfc_option.warn_unused_dummy_argument = value;
625 case OPT_fall_intrinsics:
626 gfc_option.flag_all_intrinsics = 1;
630 gfc_option.flag_automatic = value;
633 case OPT_fallow_leading_underscore:
634 gfc_option.flag_allow_leading_underscore = value;
638 gfc_option.flag_backslash = value;
642 gfc_option.flag_backtrace = value;
645 case OPT_fcheck_array_temporaries:
646 gfc_option.rtcheck |= GFC_RTCHECK_ARRAY_TEMPS;
650 gfc_option.flag_dump_core = value;
653 case OPT_fcray_pointer:
654 gfc_option.flag_cray_pointer = value;
658 gfc_option.flag_f2c = value;
662 gfc_option.flag_dollar_ok = value;
665 case OPT_fexternal_blas:
666 gfc_option.flag_external_blas = value;
669 case OPT_fblas_matmul_limit_:
670 gfc_option.blas_matmul_limit = value;
673 case OPT_fd_lines_as_code:
674 gfc_option.flag_d_lines = 1;
677 case OPT_fd_lines_as_comments:
678 gfc_option.flag_d_lines = 0;
681 case OPT_fdump_parse_tree:
682 gfc_option.dump_parse_tree = value;
685 case OPT_ffixed_form:
686 gfc_option.source_form = FORM_FIXED;
689 case OPT_ffixed_line_length_none:
690 gfc_option.fixed_line_length = 0;
693 case OPT_ffixed_line_length_:
694 if (value != 0 && value < 7)
695 gfc_fatal_error ("Fixed line length must be at least seven.");
696 gfc_option.fixed_line_length = value;
700 gfc_option.source_form = FORM_FREE;
704 gfc_option.flag_openmp = value;
707 case OPT_ffree_line_length_none:
708 gfc_option.free_line_length = 0;
711 case OPT_ffree_line_length_:
712 if (value != 0 && value < 4)
713 gfc_fatal_error ("Free line length must be at least three.");
714 gfc_option.free_line_length = value;
717 case OPT_funderscoring:
718 gfc_option.flag_underscoring = value;
721 case OPT_fwhole_file:
722 gfc_option.flag_whole_file = value;
725 case OPT_fsecond_underscore:
726 gfc_option.flag_second_underscore = value;
729 case OPT_static_libgfortran:
730 #ifndef HAVE_LD_STATIC_DYNAMIC
731 gfc_fatal_error ("-static-libgfortran is not supported in this "
736 case OPT_fimplicit_none:
737 gfc_option.flag_implicit_none = value;
740 case OPT_fintrinsic_modules_path:
741 gfc_add_include_path (arg, false, false);
742 gfc_add_intrinsic_modules_path (arg);
745 case OPT_fmax_array_constructor_:
746 gfc_option.flag_max_array_constructor = value > 65535 ? value : 65535;
749 case OPT_fmax_errors_:
750 gfc_option.max_errors = value;
753 case OPT_fmax_stack_var_size_:
754 gfc_option.flag_max_stack_var_size = value;
757 case OPT_fmodule_private:
758 gfc_option.flag_module_private = value;
761 case OPT_frange_check:
762 gfc_option.flag_range_check = value;
765 case OPT_fpack_derived:
766 gfc_option.flag_pack_derived = value;
769 case OPT_frepack_arrays:
770 gfc_option.flag_repack_arrays = value;
773 case OPT_fpreprocessed:
774 gfc_option.flag_preprocessed = value;
777 case OPT_fmax_identifier_length_:
778 if (value > GFC_MAX_SYMBOL_LEN)
779 gfc_fatal_error ("Maximum supported identifier length is %d",
781 gfc_option.max_identifier_length = value;
784 case OPT_fdefault_integer_8:
785 gfc_option.flag_default_integer = value;
788 case OPT_fdefault_real_8:
789 gfc_option.flag_default_real = value;
792 case OPT_fdefault_double_8:
793 gfc_option.flag_default_double = value;
796 case OPT_finit_local_zero:
797 gfc_option.flag_init_integer = GFC_INIT_INTEGER_ON;
798 gfc_option.flag_init_integer_value = 0;
799 gfc_option.flag_init_real = GFC_INIT_REAL_ZERO;
800 gfc_option.flag_init_logical = GFC_INIT_LOGICAL_FALSE;
801 gfc_option.flag_init_character = GFC_INIT_CHARACTER_ON;
802 gfc_option.flag_init_character_value = (char)0;
805 case OPT_finit_logical_:
806 if (!strcasecmp (arg, "false"))
807 gfc_option.flag_init_logical = GFC_INIT_LOGICAL_FALSE;
808 else if (!strcasecmp (arg, "true"))
809 gfc_option.flag_init_logical = GFC_INIT_LOGICAL_TRUE;
811 gfc_fatal_error ("Unrecognized option to -finit-logical: %s",
815 case OPT_finit_real_:
816 if (!strcasecmp (arg, "zero"))
817 gfc_option.flag_init_real = GFC_INIT_REAL_ZERO;
818 else if (!strcasecmp (arg, "nan"))
819 gfc_option.flag_init_real = GFC_INIT_REAL_NAN;
820 else if (!strcasecmp (arg, "snan"))
821 gfc_option.flag_init_real = GFC_INIT_REAL_SNAN;
822 else if (!strcasecmp (arg, "inf"))
823 gfc_option.flag_init_real = GFC_INIT_REAL_INF;
824 else if (!strcasecmp (arg, "-inf"))
825 gfc_option.flag_init_real = GFC_INIT_REAL_NEG_INF;
827 gfc_fatal_error ("Unrecognized option to -finit-real: %s",
831 case OPT_finit_integer_:
832 gfc_option.flag_init_integer = GFC_INIT_INTEGER_ON;
833 gfc_option.flag_init_integer_value = atoi (arg);
836 case OPT_finit_character_:
837 if (value >= 0 && value <= 127)
839 gfc_option.flag_init_character = GFC_INIT_CHARACTER_ON;
840 gfc_option.flag_init_character_value = (char)value;
843 gfc_fatal_error ("The value of n in -finit-character=n must be "
844 "between 0 and 127");
848 gfc_add_include_path (arg, true, false);
852 gfc_handle_module_path_options (arg);
856 gfc_option.flag_sign_zero = value;
860 gfc_handle_fpe_trap_option (arg);
864 gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77;
865 gfc_option.warn_std = GFC_STD_F95_OBS;
866 gfc_option.max_continue_fixed = 19;
867 gfc_option.max_continue_free = 39;
868 gfc_option.max_identifier_length = 31;
869 gfc_option.warn_ampersand = 1;
870 gfc_option.warn_tabs = 0;
874 gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77
875 | GFC_STD_F2003 | GFC_STD_F95;
876 gfc_option.warn_std = GFC_STD_F95_OBS;
877 gfc_option.max_identifier_length = 63;
878 gfc_option.warn_ampersand = 1;
879 gfc_option.warn_tabs = 0;
883 gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77
884 | GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008;
885 gfc_option.warn_std = GFC_STD_F95_OBS;
886 gfc_option.max_identifier_length = 63;
887 gfc_option.warn_ampersand = 1;
888 gfc_option.warn_tabs = 0;
892 set_default_std_flags ();
896 set_default_std_flags ();
897 gfc_option.warn_std = 0;
900 case OPT_Wintrinsics_std:
901 gfc_option.warn_intrinsics_std = value;
904 case OPT_fshort_enums:
905 /* Handled in language-independent code. */
908 case OPT_fconvert_little_endian:
909 gfc_option.convert = GFC_CONVERT_LITTLE;
912 case OPT_fconvert_big_endian:
913 gfc_option.convert = GFC_CONVERT_BIG;
916 case OPT_fconvert_native:
917 gfc_option.convert = GFC_CONVERT_NATIVE;
920 case OPT_fconvert_swap:
921 gfc_option.convert = GFC_CONVERT_SWAP;
924 case OPT_frecord_marker_4:
925 gfc_option.record_marker = 4;
928 case OPT_frecord_marker_8:
929 gfc_option.record_marker = 8;
932 case OPT_fmax_subrecord_length_:
933 if (value > MAX_SUBRECORD_LENGTH)
934 gfc_fatal_error ("Maximum subrecord length cannot exceed %d",
935 MAX_SUBRECORD_LENGTH);
937 gfc_option.max_subrecord_length = value;
941 gfc_option.flag_recursive = value;
944 case OPT_falign_commons:
945 gfc_option.flag_align_commons = value;
948 case OPT_fprotect_parens:
949 gfc_option.flag_protect_parens = value;
953 gfc_handle_runtime_check_option (arg);
957 gfc_handle_coarray_option (arg);