unsigned int gfc_init_options (unsigned int argc, const char **argv) { gfc_source_file = NULL; gfc_option.module_dir = NULL; gfc_option.source_form = FORM_UNKNOWN; gfc_option.fixed_line_length = 72; gfc_option.free_line_length = 132; gfc_option.max_continue_fixed = 255; gfc_option.max_continue_free = 255; gfc_option.max_identifier_length = GFC_MAX_SYMBOL_LEN; gfc_option.max_subrecord_length = 0; gfc_option.flag_max_array_constructor = 65535; gfc_option.convert = GFC_CONVERT_NATIVE; gfc_option.record_marker = 0; gfc_option.dump_parse_tree = 0; gfc_option.warn_aliasing = 0; gfc_option.warn_ampersand = 0; gfc_option.warn_character_truncation = 0; gfc_option.warn_array_temp = 0; gfc_option.warn_conversion = 0; gfc_option.warn_implicit_interface = 0; gfc_option.warn_line_truncation = 0; gfc_option.warn_surprising = 0; gfc_option.warn_tabs = 1; gfc_option.warn_underflow = 1; gfc_option.warn_intrinsic_shadow = 0; gfc_option.warn_intrinsics_std = 0; gfc_option.warn_align_commons = 1; gfc_option.max_errors = 25; gfc_option.flag_all_intrinsics = 0; gfc_option.flag_default_double = 0; gfc_option.flag_default_integer = 0; gfc_option.flag_default_real = 0; gfc_option.flag_dollar_ok = 0; gfc_option.flag_underscoring = 1; gfc_option.flag_f2c = 0; gfc_option.flag_second_underscore = -1; gfc_option.flag_implicit_none = 0; /* Default value of flag_max_stack_var_size is set in gfc_post_options. */ gfc_option.flag_max_stack_var_size = -2; gfc_option.flag_range_check = 1; gfc_option.flag_pack_derived = 0; gfc_option.flag_repack_arrays = 0; gfc_option.flag_preprocessed = 0; gfc_option.flag_automatic = 1; gfc_option.flag_backslash = 0; gfc_option.flag_module_private = 0; gfc_option.flag_backtrace = 0; gfc_option.flag_check_array_temporaries = 0; gfc_option.flag_allow_leading_underscore = 0; gfc_option.flag_dump_core = 0; gfc_option.flag_external_blas = 0; gfc_option.blas_matmul_limit = 30; gfc_option.flag_cray_pointer = 0; gfc_option.flag_d_lines = -1; gfc_option.flag_openmp = 0; gfc_option.flag_sign_zero = 1; gfc_option.flag_recursive = 0; gfc_option.flag_init_integer = GFC_INIT_INTEGER_OFF; gfc_option.flag_init_integer_value = 0; gfc_option.flag_init_real = GFC_INIT_REAL_OFF; gfc_option.flag_init_logical = GFC_INIT_LOGICAL_OFF; gfc_option.flag_init_character = GFC_INIT_CHARACTER_OFF; gfc_option.flag_init_character_value = (char)0; gfc_option.flag_align_commons = 1; gfc_option.fpe = 0; /* Argument pointers cannot point to anything but their argument. */ flag_argument_noalias = 3; flag_errno_math = 0; set_default_std_flags (); /* -fshort-enums can be default on some targets. */ gfc_option.fshort_enums = targetm.default_short_enums (); /* Initialize cpp-related options. */ gfc_cpp_init_options(argc, argv); return CL_Fortran; }
void gfc_init_options (unsigned int decoded_options_count, struct cl_decoded_option *decoded_options) { gfc_source_file = NULL; gfc_option.module_dir = NULL; gfc_option.source_form = FORM_UNKNOWN; gfc_option.fixed_line_length = 72; gfc_option.free_line_length = 132; gfc_option.max_continue_fixed = 255; gfc_option.max_continue_free = 255; gfc_option.max_identifier_length = GFC_MAX_SYMBOL_LEN; gfc_option.max_subrecord_length = 0; gfc_option.flag_max_array_constructor = 65535; gfc_option.convert = GFC_CONVERT_NATIVE; gfc_option.record_marker = 0; gfc_option.dump_fortran_original = 0; gfc_option.dump_fortran_optimized = 0; gfc_option.warn_aliasing = 0; gfc_option.warn_ampersand = 0; gfc_option.warn_character_truncation = 0; gfc_option.warn_array_temp = 0; gfc_option.gfc_warn_conversion = 0; gfc_option.warn_conversion_extra = 0; gfc_option.warn_implicit_interface = 0; gfc_option.warn_line_truncation = 0; gfc_option.warn_surprising = 0; gfc_option.warn_tabs = 1; gfc_option.warn_underflow = 1; gfc_option.warn_intrinsic_shadow = 0; gfc_option.warn_intrinsics_std = 0; gfc_option.warn_align_commons = 1; gfc_option.warn_unused_dummy_argument = 0; gfc_option.max_errors = 25; gfc_option.flag_all_intrinsics = 0; gfc_option.flag_default_double = 0; gfc_option.flag_default_integer = 0; gfc_option.flag_default_real = 0; gfc_option.flag_dollar_ok = 0; gfc_option.flag_underscoring = 1; gfc_option.flag_whole_file = 1; gfc_option.flag_f2c = 0; gfc_option.flag_second_underscore = -1; gfc_option.flag_implicit_none = 0; /* Default value of flag_max_stack_var_size is set in gfc_post_options. */ gfc_option.flag_max_stack_var_size = -2; gfc_option.flag_range_check = 1; gfc_option.flag_pack_derived = 0; gfc_option.flag_repack_arrays = 0; gfc_option.flag_preprocessed = 0; gfc_option.flag_automatic = 1; gfc_option.flag_backslash = 0; gfc_option.flag_module_private = 0; gfc_option.flag_backtrace = 0; gfc_option.flag_allow_leading_underscore = 0; gfc_option.flag_dump_core = 0; gfc_option.flag_external_blas = 0; gfc_option.blas_matmul_limit = 30; gfc_option.flag_cray_pointer = 0; gfc_option.flag_d_lines = -1; gfc_option.gfc_flag_openmp = 0; gfc_option.flag_sign_zero = 1; gfc_option.flag_recursive = 0; gfc_option.flag_init_integer = GFC_INIT_INTEGER_OFF; gfc_option.flag_init_integer_value = 0; gfc_option.flag_init_real = GFC_INIT_REAL_OFF; gfc_option.flag_init_logical = GFC_INIT_LOGICAL_OFF; gfc_option.flag_init_character = GFC_INIT_CHARACTER_OFF; gfc_option.flag_init_character_value = (char)0; gfc_option.flag_align_commons = 1; gfc_option.flag_protect_parens = 1; gfc_option.flag_realloc_lhs = -1; gfc_option.fpe = 0; gfc_option.rtcheck = 0; gfc_option.coarray = GFC_FCOARRAY_NONE; set_default_std_flags (); /* Initialize cpp-related options. */ gfc_cpp_init_options (decoded_options_count, decoded_options); }
int gfc_handle_option (size_t scode, const char *arg, int value) { int result = 1; enum opt_code code = (enum opt_code) scode; /* Ignore file names. */ if (code == N_OPTS) return 1; if (gfc_cpp_handle_option (scode, arg, value) == 1) return 1; switch (code) { default: result = 0; break; case OPT_Wall: set_Wall (value); break; case OPT_Waliasing: gfc_option.warn_aliasing = value; break; case OPT_Wampersand: gfc_option.warn_ampersand = value; break; case OPT_Warray_temporaries: gfc_option.warn_array_temp = value; break; case OPT_Wcharacter_truncation: gfc_option.warn_character_truncation = value; break; case OPT_Wconversion: gfc_option.warn_conversion = value; break; case OPT_Wimplicit_interface: gfc_option.warn_implicit_interface = value; break; case OPT_Wline_truncation: gfc_option.warn_line_truncation = value; break; case OPT_Wreturn_type: warn_return_type = value; break; case OPT_Wsurprising: gfc_option.warn_surprising = value; break; case OPT_Wtabs: gfc_option.warn_tabs = value; break; case OPT_Wunderflow: gfc_option.warn_underflow = value; break; case OPT_Wintrinsic_shadow: gfc_option.warn_intrinsic_shadow = value; break; case OPT_Walign_commons: gfc_option.warn_align_commons = value; break; case OPT_fall_intrinsics: gfc_option.flag_all_intrinsics = 1; break; case OPT_fautomatic: gfc_option.flag_automatic = value; break; case OPT_fallow_leading_underscore: gfc_option.flag_allow_leading_underscore = value; break; case OPT_fbackslash: gfc_option.flag_backslash = value; break; case OPT_fbacktrace: gfc_option.flag_backtrace = value; break; case OPT_fcheck_array_temporaries: gfc_option.flag_check_array_temporaries = value; break; case OPT_fdump_core: gfc_option.flag_dump_core = value; break; case OPT_fcray_pointer: gfc_option.flag_cray_pointer = value; break; case OPT_ff2c: gfc_option.flag_f2c = value; break; case OPT_fdollar_ok: gfc_option.flag_dollar_ok = value; break; case OPT_fexternal_blas: gfc_option.flag_external_blas = value; break; case OPT_fblas_matmul_limit_: gfc_option.blas_matmul_limit = value; break; case OPT_fd_lines_as_code: gfc_option.flag_d_lines = 1; break; case OPT_fd_lines_as_comments: gfc_option.flag_d_lines = 0; break; case OPT_fdump_parse_tree: gfc_option.dump_parse_tree = value; break; case OPT_ffixed_form: gfc_option.source_form = FORM_FIXED; break; case OPT_ffixed_line_length_none: gfc_option.fixed_line_length = 0; break; case OPT_ffixed_line_length_: if (value != 0 && value < 7) gfc_fatal_error ("Fixed line length must be at least seven."); gfc_option.fixed_line_length = value; break; case OPT_ffree_form: gfc_option.source_form = FORM_FREE; break; case OPT_fopenmp: gfc_option.flag_openmp = value; break; case OPT_ffree_line_length_none: gfc_option.free_line_length = 0; break; case OPT_ffree_line_length_: if (value != 0 && value < 4) gfc_fatal_error ("Free line length must be at least three."); gfc_option.free_line_length = value; break; case OPT_funderscoring: gfc_option.flag_underscoring = value; break; case OPT_fsecond_underscore: gfc_option.flag_second_underscore = value; break; case OPT_static_libgfortran: #ifndef HAVE_LD_STATIC_DYNAMIC gfc_fatal_error ("-static-libgfortran is not supported in this " "configuration"); #endif break; case OPT_fimplicit_none: gfc_option.flag_implicit_none = value; break; case OPT_fintrinsic_modules_path: gfc_add_include_path (arg, false, false); gfc_add_intrinsic_modules_path (arg); break; case OPT_fmax_array_constructor_: gfc_option.flag_max_array_constructor = value > 65535 ? value : 65535; break; case OPT_fmax_errors_: gfc_option.max_errors = value; break; case OPT_fmax_stack_var_size_: gfc_option.flag_max_stack_var_size = value; break; case OPT_fmodule_private: gfc_option.flag_module_private = value; break; case OPT_frange_check: gfc_option.flag_range_check = value; break; case OPT_fpack_derived: gfc_option.flag_pack_derived = value; break; case OPT_frepack_arrays: gfc_option.flag_repack_arrays = value; break; case OPT_fpreprocessed: gfc_option.flag_preprocessed = value; break; case OPT_fmax_identifier_length_: if (value > GFC_MAX_SYMBOL_LEN) gfc_fatal_error ("Maximum supported identifier length is %d", GFC_MAX_SYMBOL_LEN); gfc_option.max_identifier_length = value; break; case OPT_fdefault_integer_8: gfc_option.flag_default_integer = value; break; case OPT_fdefault_real_8: gfc_option.flag_default_real = value; break; case OPT_fdefault_double_8: gfc_option.flag_default_double = value; break; case OPT_finit_local_zero: gfc_option.flag_init_integer = GFC_INIT_INTEGER_ON; gfc_option.flag_init_integer_value = 0; gfc_option.flag_init_real = GFC_INIT_REAL_ZERO; gfc_option.flag_init_logical = GFC_INIT_LOGICAL_FALSE; gfc_option.flag_init_character = GFC_INIT_CHARACTER_ON; gfc_option.flag_init_character_value = (char)0; break; case OPT_finit_logical_: if (!strcasecmp (arg, "false")) gfc_option.flag_init_logical = GFC_INIT_LOGICAL_FALSE; else if (!strcasecmp (arg, "true")) gfc_option.flag_init_logical = GFC_INIT_LOGICAL_TRUE; else gfc_fatal_error ("Unrecognized option to -finit-logical: %s", arg); break; case OPT_finit_real_: if (!strcasecmp (arg, "zero")) gfc_option.flag_init_real = GFC_INIT_REAL_ZERO; else if (!strcasecmp (arg, "nan")) gfc_option.flag_init_real = GFC_INIT_REAL_NAN; else if (!strcasecmp (arg, "inf")) gfc_option.flag_init_real = GFC_INIT_REAL_INF; else if (!strcasecmp (arg, "-inf")) gfc_option.flag_init_real = GFC_INIT_REAL_NEG_INF; else gfc_fatal_error ("Unrecognized option to -finit-real: %s", arg); break; case OPT_finit_integer_: gfc_option.flag_init_integer = GFC_INIT_INTEGER_ON; gfc_option.flag_init_integer_value = atoi (arg); break; case OPT_finit_character_: if (value >= 0 && value <= 127) { gfc_option.flag_init_character = GFC_INIT_CHARACTER_ON; gfc_option.flag_init_character_value = (char)value; } else gfc_fatal_error ("The value of n in -finit-character=n must be " "between 0 and 127"); break; case OPT_I: gfc_add_include_path (arg, true, false); break; case OPT_J: gfc_handle_module_path_options (arg); break; case OPT_fsign_zero: gfc_option.flag_sign_zero = value; break; case OPT_ffpe_trap_: gfc_handle_fpe_trap_option (arg); break; case OPT_std_f95: gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77; gfc_option.warn_std = GFC_STD_F95_OBS; gfc_option.max_continue_fixed = 19; gfc_option.max_continue_free = 39; gfc_option.max_identifier_length = 31; gfc_option.warn_ampersand = 1; gfc_option.warn_tabs = 0; break; case OPT_std_f2003: gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77 | GFC_STD_F2003 | GFC_STD_F95; gfc_option.warn_std = GFC_STD_F95_OBS; gfc_option.max_identifier_length = 63; gfc_option.warn_ampersand = 1; gfc_option.warn_tabs = 0; break; case OPT_std_f2008: gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77 | GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008; gfc_option.warn_std = GFC_STD_F95_OBS; gfc_option.max_identifier_length = 63; gfc_option.warn_ampersand = 1; gfc_option.warn_tabs = 0; break; case OPT_std_gnu: set_default_std_flags (); break; case OPT_std_legacy: set_default_std_flags (); gfc_option.warn_std = 0; break; case OPT_Wintrinsics_std: gfc_option.warn_intrinsics_std = value; break; case OPT_fshort_enums: gfc_option.fshort_enums = 1; break; case OPT_fconvert_little_endian: gfc_option.convert = GFC_CONVERT_LITTLE; break; case OPT_fconvert_big_endian: gfc_option.convert = GFC_CONVERT_BIG; break; case OPT_fconvert_native: gfc_option.convert = GFC_CONVERT_NATIVE; break; case OPT_fconvert_swap: gfc_option.convert = GFC_CONVERT_SWAP; break; case OPT_frecord_marker_4: gfc_option.record_marker = 4; break; case OPT_frecord_marker_8: gfc_option.record_marker = 8; break; case OPT_fmax_subrecord_length_: if (value > MAX_SUBRECORD_LENGTH) gfc_fatal_error ("Maximum subrecord length cannot exceed %d", MAX_SUBRECORD_LENGTH); gfc_option.max_subrecord_length = value; break; case OPT_frecursive: gfc_option.flag_recursive = 1; break; case OPT_falign_commons: gfc_option.flag_align_commons = value; break; } return result; }