diff options
author | Tobias Burnus <burnus@net-b.de> | 2013-03-18 10:50:23 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2013-03-18 10:50:23 +0100 |
commit | 9fa5223135cf837e920329b2aee6f87f9515d231 (patch) | |
tree | 25e8e8b691c5f6e57051576d9f133388c1a8479e | |
parent | 0d5a1b56948ace8d94b7ab74c303cdc842413c3c (diff) | |
download | gcc-9fa5223135cf837e920329b2aee6f87f9515d231.zip gcc-9fa5223135cf837e920329b2aee6f87f9515d231.tar.gz gcc-9fa5223135cf837e920329b2aee6f87f9515d231.tar.bz2 |
gfortran.h (gfc_option_t): Remove flag_whole_file.
2013-03-18 Tobias Burnus <burnus@net-b.de>
* gfortran.h (gfc_option_t): Remove flag_whole_file.
* invoke.texi (-fno-whole-file): Remove.
* lang.opt (fwhole-file): Change to Ignore.
* options.c (gfc_init_options, gfc_post_options,
gfc_handle_option): Remove !flag_whole_file handling
* parse.c (resolve_all_program_units,
* translate_all_program_units,
gfc_parse_file): Ditto.
* resolve.c (resolve_global_procedure): Ditto.
* trans-decl.c (gfc_get_symbol_decl,
* gfc_get_extern_function_decl,
gfc_create_module_variable): Ditto.
* trans-types.c (gfc_get_derived_type): Ditto.
From-SVN: r196773
-rw-r--r-- | gcc/fortran/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/fortran/gfortran.h | 1 | ||||
-rw-r--r-- | gcc/fortran/invoke.texi | 18 | ||||
-rw-r--r-- | gcc/fortran/lang.opt | 4 | ||||
-rw-r--r-- | gcc/fortran/options.c | 16 | ||||
-rw-r--r-- | gcc/fortran/parse.c | 41 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 19 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 33 | ||||
-rw-r--r-- | gcc/fortran/trans-types.c | 19 |
9 files changed, 58 insertions, 107 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ec9fbaa..817b184 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,17 @@ +2013-03-18 Tobias Burnus <burnus@net-b.de> + + * gfortran.h (gfc_option_t): Remove flag_whole_file. + * invoke.texi (-fno-whole-file): Remove. + * lang.opt (fwhole-file): Change to Ignore. + * options.c (gfc_init_options, gfc_post_options, + gfc_handle_option): Remove !flag_whole_file handling + * parse.c (resolve_all_program_units, translate_all_program_units, + gfc_parse_file): Ditto. + * resolve.c (resolve_global_procedure): Ditto. + * trans-decl.c (gfc_get_symbol_decl, gfc_get_extern_function_decl, + gfc_create_module_variable): Ditto. + * trans-types.c (gfc_get_derived_type): Ditto. + 2013-03-15 Tobias Burnus <burnus@net-b.de> PR fortran/56615 diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 18bbf79..76d2797 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -2297,7 +2297,6 @@ typedef struct int flag_init_character; char flag_init_character_value; int flag_align_commons; - int flag_whole_file; int flag_protect_parens; int flag_realloc_lhs; int flag_aggressive_function_elimination; diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index db958f9..12c200e 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -180,7 +180,7 @@ and warnings}. -finit-real=@var{<zero|inf|-inf|nan|snan>} @gol -fmax-array-constructor=@var{n} -fmax-stack-var-size=@var{n} -fno-align-commons @gol --fno-automatic -fno-protect-parens -fno-underscoring -fno-whole-file @gol +-fno-automatic -fno-protect-parens -fno-underscoring @gol -fsecond-underscore -fpack-derived -frealloc-lhs -frecursive @gol -frepack-arrays -fshort-enums -fstack-arrays } @@ -1291,22 +1291,6 @@ in the source, even if the names as seen by the linker are mangled to prevent accidental linking between procedures with incompatible interfaces. -@item -fno-whole-file -@opindex @code{fno-whole-file} -This flag causes the compiler to resolve and translate each procedure in -a file separately. - -By default, the whole file is parsed and placed in a single front-end tree. -During resolution, in addition to all the usual checks and fixups, references -to external procedures that are in the same file effect resolution of -that procedure, if not already done, and a check of the interfaces. The -dependences are resolved by changing the order in which the file is -translated into the backend tree. Thus, a procedure that is referenced -is translated before the reference and the duplication of backend tree -declarations eliminated. - -The @option{-fno-whole-file} option is deprecated and may lead to wrong code. - @item -fsecond-underscore @opindex @code{fsecond-underscore} @cindex underscore diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index fbe8a1b..dbc3f6b 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -594,8 +594,8 @@ Fortran Append underscores to externally visible names fwhole-file -Fortran -Compile all program units at once and check all interfaces +Fortran Ignore +Does nothing. Preserved for backward compatibility. fworking-directory Fortran diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index fba1a3f..3f5de03 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -124,7 +124,6 @@ gfc_init_options (unsigned int decoded_options_count, gfc_option.flag_real8_kind = 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; @@ -264,14 +263,6 @@ gfc_post_options (const char **pfilename) sorry ("-fexcess-precision=standard for Fortran"); flag_excess_precision_cmdline = EXCESS_PRECISION_FAST; - /* Whole program needs whole file mode. */ - if (flag_whole_program) - gfc_option.flag_whole_file = 1; - - /* Enable whole-file mode if LTO is in effect. */ - if (flag_lto) - gfc_option.flag_whole_file = 1; - /* Fortran allows associative math - but we cannot reassociate if we want traps or signed zeros. Cf. also flag_protect_parens. */ if (flag_associative_math == -1) @@ -430,9 +421,6 @@ gfc_post_options (const char **pfilename) gfc_option.warn_tabs = 0; } - if (pedantic && gfc_option.flag_whole_file) - gfc_option.flag_whole_file = 2; - /* Optimization implies front end optimization, unless the user specified it directly. */ @@ -823,10 +811,6 @@ gfc_handle_option (size_t scode, const char *arg, int value, gfc_option.flag_underscoring = value; break; - case OPT_fwhole_file: - gfc_option.flag_whole_file = value; - break; - case OPT_fsecond_underscore: gfc_option.flag_second_underscore = value; break; diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index 6ee7b7f..a7fa7dc 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -4382,8 +4382,7 @@ add_global_program (void) } -/* Resolve all the program units when whole file scope option - is active. */ +/* Resolve all the program units. */ static void resolve_all_program_units (gfc_namespace *gfc_global_ns_list) { @@ -4424,9 +4423,8 @@ clean_up_modules (gfc_gsymbol *gsym) } -/* Translate all the program units when whole file scope option - is active. This could be in a different order to resolution if - there are forward references in the file. */ +/* Translate all the program units. This could be in a different order + to resolution if there are forward references in the file. */ static void translate_all_program_units (gfc_namespace *gfc_global_ns_list, bool main_in_tu) @@ -4551,8 +4549,7 @@ loop: accept_statement (st); add_global_program (); parse_progunit (ST_NONE); - if (gfc_option.flag_whole_file) - goto prog_units; + goto prog_units; break; case ST_SUBROUTINE: @@ -4560,8 +4557,7 @@ loop: push_state (&s, COMP_SUBROUTINE, gfc_new_block); accept_statement (st); parse_progunit (ST_NONE); - if (gfc_option.flag_whole_file) - goto prog_units; + goto prog_units; break; case ST_FUNCTION: @@ -4569,8 +4565,7 @@ loop: push_state (&s, COMP_FUNCTION, gfc_new_block); accept_statement (st); parse_progunit (ST_NONE); - if (gfc_option.flag_whole_file) - goto prog_units; + goto prog_units; break; case ST_BLOCK_DATA: @@ -4597,8 +4592,7 @@ loop: push_state (&s, COMP_PROGRAM, gfc_new_block); main_program_symbol (gfc_current_ns, "MAIN__"); parse_progunit (st); - if (gfc_option.flag_whole_file) - goto prog_units; + goto prog_units; break; } @@ -4615,19 +4609,9 @@ loop: if (s.state == COMP_MODULE) { gfc_dump_module (s.sym->name, errors_before == errors); - if (!gfc_option.flag_whole_file) - { - if (errors == 0) - gfc_generate_module_code (gfc_current_ns); - pop_state (); - gfc_done_2 (); - } - else - { - gfc_current_ns->derived_types = gfc_derived_types; - gfc_derived_types = NULL; - goto prog_units; - } + gfc_current_ns->derived_types = gfc_derived_types; + gfc_derived_types = NULL; + goto prog_units; } else { @@ -4660,9 +4644,6 @@ prog_units: done: - if (!gfc_option.flag_whole_file) - goto termination; - /* Do the resolution. */ resolve_all_program_units (gfc_global_ns_list); @@ -4681,8 +4662,6 @@ prog_units: /* Do the translation. */ translate_all_program_units (gfc_global_ns_list, seen_program); -termination: - gfc_end_source_files (); return SUCCESS; diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index bb0b946..e9b6fb9 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -2145,15 +2145,14 @@ resolve_global_procedure (gfc_symbol *sym, locus *where, if ((gsym->type != GSYM_UNKNOWN && gsym->type != type)) gfc_global_used (gsym, where); - if (gfc_option.flag_whole_file - && (sym->attr.if_source == IFSRC_UNKNOWN - || sym->attr.if_source == IFSRC_IFBODY) - && gsym->type != GSYM_UNKNOWN - && gsym->ns - && gsym->ns->resolved != -1 - && gsym->ns->proc_name - && not_in_recursive (sym, gsym->ns) - && not_entry_self_reference (sym, gsym->ns)) + if ((sym->attr.if_source == IFSRC_UNKNOWN + || sym->attr.if_source == IFSRC_IFBODY) + && gsym->type != GSYM_UNKNOWN + && gsym->ns + && gsym->ns->resolved != -1 + && gsym->ns->proc_name + && not_in_recursive (sym, gsym->ns) + && not_entry_self_reference (sym, gsym->ns)) { gfc_symbol *def_sym; @@ -2364,7 +2363,7 @@ resolve_global_procedure (gfc_symbol *sym, locus *where, "an explicit interface", sym->name, &sym->declared_at); } - if (gfc_option.flag_whole_file == 1 + if (!pedantic || ((gfc_option.warn_std & GFC_STD_LEGACY) && !(gfc_option.warn_std & GFC_STD_GNU))) gfc_errors_to_warnings (1); diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 7806bbb..0e853ba 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1341,15 +1341,14 @@ gfc_get_symbol_decl (gfc_symbol * sym) && sym->attr.flavor == FL_PARAMETER) intrinsic_array_parameter = true; - /* If use associated and whole file compilation, use the module + /* If use associated compilation, use the module declaration. */ - if (gfc_option.flag_whole_file - && (sym->attr.flavor == FL_VARIABLE - || sym->attr.flavor == FL_PARAMETER) - && sym->attr.use_assoc - && !intrinsic_array_parameter - && sym->module - && gfc_get_module_backend_decl (sym)) + if ((sym->attr.flavor == FL_VARIABLE + || sym->attr.flavor == FL_PARAMETER) + && sym->attr.use_assoc + && !intrinsic_array_parameter + && sym->module + && gfc_get_module_backend_decl (sym)) { if (sym->ts.type == BT_CLASS && sym->backend_decl) GFC_DECL_CLASS(sym->backend_decl) = 1; @@ -1646,12 +1645,11 @@ gfc_get_extern_function_decl (gfc_symbol * sym) return the backend_decl. */ gsym = gfc_find_gsymbol (gfc_gsym_root, sym->name); - if (gfc_option.flag_whole_file - && (!sym->attr.use_assoc || sym->attr.if_source != IFSRC_DECL) - && !sym->backend_decl - && gsym && gsym->ns - && ((gsym->type == GSYM_SUBROUTINE) || (gsym->type == GSYM_FUNCTION)) - && (gsym->ns->proc_name->backend_decl || !sym->attr.intrinsic)) + if ((!sym->attr.use_assoc || sym->attr.if_source != IFSRC_DECL) + && !sym->backend_decl + && gsym && gsym->ns + && ((gsym->type == GSYM_SUBROUTINE) || (gsym->type == GSYM_FUNCTION)) + && (gsym->ns->proc_name->backend_decl || !sym->attr.intrinsic)) { if (!gsym->ns->proc_name->backend_decl) { @@ -1703,9 +1701,7 @@ gfc_get_extern_function_decl (gfc_symbol * sym) if (sym->module) gsym = gfc_find_gsymbol (gfc_gsym_root, sym->module); - if (gfc_option.flag_whole_file - && gsym && gsym->ns - && gsym->type == GSYM_MODULE) + if (gsym && gsym->ns && gsym->type == GSYM_MODULE) { gfc_symbol *s; @@ -4047,8 +4043,7 @@ gfc_create_module_variable (gfc_symbol * sym) decl = sym->backend_decl; gcc_assert (sym->ns->proc_name->attr.flavor == FL_MODULE); - /* -fwhole-file mixes up the contexts so these asserts are unnecessary. */ - if (!(gfc_option.flag_whole_file && sym->attr.use_assoc)) + if (!sym->attr.use_assoc) { gcc_assert (TYPE_CONTEXT (decl) == NULL_TREE || TYPE_CONTEXT (decl) == sym->ns->proc_name->backend_decl); diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 30561ee..cdac0da 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -2370,19 +2370,16 @@ gfc_get_derived_type (gfc_symbol * derived) } /* If use associated, use the module type for this one. */ - if (gfc_option.flag_whole_file - && derived->backend_decl == NULL - && derived->attr.use_assoc - && derived->module - && gfc_get_module_backend_decl (derived)) + if (derived->backend_decl == NULL + && derived->attr.use_assoc + && derived->module + && gfc_get_module_backend_decl (derived)) goto copy_derived_types; - /* If a whole file compilation, the derived types from an earlier - namespace can be used as the canonical type. */ - if (gfc_option.flag_whole_file - && derived->backend_decl == NULL - && !derived->attr.use_assoc - && gfc_global_ns_list) + /* The derived types from an earlier namespace can be used as the + canonical type. */ + if (derived->backend_decl == NULL && !derived->attr.use_assoc + && gfc_global_ns_list) { for (ns = gfc_global_ns_list; ns->translated && !got_canonical; |