2013-03-18 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Mar 2013 09:50:23 +0000 (09:50 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Mar 2013 09:50:23 +0000 (09:50 +0000)
        * 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196773 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/gfortran.h
gcc/fortran/invoke.texi
gcc/fortran/lang.opt
gcc/fortran/options.c
gcc/fortran/parse.c
gcc/fortran/resolve.c
gcc/fortran/trans-decl.c
gcc/fortran/trans-types.c

index ec9fbaa..817b184 100644 (file)
@@ -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
index 18bbf79..76d2797 100644 (file)
@@ -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;
index db958f9..12c200e 100644 (file)
@@ -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
index fbe8a1b..dbc3f6b 100644 (file)
@@ -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
index fba1a3f..3f5de03 100644 (file)
@@ -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;
index 6ee7b7f..a7fa7dc 100644 (file)
@@ -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;
 
index bb0b946..e9b6fb9 100644 (file)
@@ -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);
index 7806bbb..0e853ba 100644 (file)
@@ -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);
index 30561ee..cdac0da 100644 (file)
@@ -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;