toplev.h (tree_rest_of_compilation): Remove.
authorRichard Guenther <rguenther@suse.de>
Tue, 10 Apr 2012 11:56:05 +0000 (11:56 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 10 Apr 2012 11:56:05 +0000 (11:56 +0000)
2012-04-10  Richard Guenther  <rguenther@suse.de>

* toplev.h (tree_rest_of_compilation): Remove.
* tree-optimize.c (tree_rest_of_compilation): Likewise.
* cgraph.h (tree_rest_of_compilation): Declare.
* tree-optimize.c (tree_rest_of_compilation): Move ...
* cgraphunit.c (tree_rest_of_compilation): ... here.
* cgraph.c (cgraph_add_new_function): Adjust.
* Makefile.in (tree-optimize.o): Adjust.
(cgraphunit.o): Likewise.

From-SVN: r186274

gcc/ChangeLog
gcc/Makefile.in
gcc/cgraph.c
gcc/cgraph.h
gcc/cgraphunit.c
gcc/toplev.h
gcc/tree-optimize.c

index 64ff386c360921f9c9d1741c797b4d1634350be3..9628b8f3bbd812bc85edbeb558a16b742c0a104f 100644 (file)
@@ -1,3 +1,14 @@
+2012-04-10  Richard Guenther  <rguenther@suse.de>
+
+       * toplev.h (tree_rest_of_compilation): Remove.
+       * tree-optimize.c (tree_rest_of_compilation): Likewise.
+       * cgraph.h (tree_rest_of_compilation): Declare.
+       * tree-optimize.c (tree_rest_of_compilation): Move ...
+       * cgraphunit.c (tree_rest_of_compilation): ... here.
+       * cgraph.c (cgraph_add_new_function): Adjust.
+       * Makefile.in (tree-optimize.o): Adjust.
+       (cgraphunit.o): Likewise.
+
 2012-04-10  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
        PR tree-optimization/52870
index 9c4d4fe22c6f10aa8bd8c2f9ae8caa9a22a928dd..726b9d34e99c3e56634777fd09679b39ee54c6b8 100644 (file)
@@ -2556,7 +2556,7 @@ tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
    coretypes.h $(TREE_DUMP_H) toplev.h $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) langhooks.h \
    $(FLAGS_H) $(CGRAPH_H) $(PLUGIN_H) \
    $(TREE_INLINE_H) $(GGC_H) graph.h $(CGRAPH_H) \
-   $(TREE_PASS_H) $(CFGLOOP_H) $(EXCEPT_H) $(REGSET_H)
+   $(TREE_PASS_H) $(CFGLOOP_H) $(EXCEPT_H)
 
 gimplify.o : gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(GIMPLE_H) \
    $(DIAGNOSTIC_H) $(GIMPLE_H) $(TREE_INLINE_H) langhooks.h \
@@ -2922,7 +2922,7 @@ cgraphunit.o : cgraphunit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
    $(FIBHEAP_H) output.h $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) $(IPA_PROP_H) \
    gt-cgraphunit.h tree-iterator.h $(COVERAGE_H) $(TREE_DUMP_H) \
    tree-pretty-print.h gimple-pretty-print.h ipa-inline.h $(IPA_UTILS_H) \
-   $(LTO_STREAMER_H)
+   $(LTO_STREAMER_H) output.h $(REGSET_H)
 cgraphbuild.o : cgraphbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
    $(TREE_H) langhooks.h $(CGRAPH_H) intl.h pointer-set.h $(GIMPLE_H) \
    $(TREE_FLOW_H) $(TREE_PASS_H) $(IPA_UTILS_H) $(EXCEPT_H) \
index 8ab8a0b7b0657ae4c14c331f7033e8e33b22ea75..6c315072d9f35fbcfc3549f2977831203ab0e23b 100644 (file)
@@ -2466,7 +2466,7 @@ cgraph_add_new_function (tree fndecl, bool lowered)
        if (!gimple_in_ssa_p (DECL_STRUCT_FUNCTION (fndecl)))
          execute_pass_list (pass_early_local_passes.pass.sub);
        bitmap_obstack_release (NULL);
-       tree_rest_of_compilation (fndecl);
+       tree_rest_of_compilation (node);
        pop_cfun ();
        current_function_decl = NULL;
        break;
index 726285989fcb8d8006b0d6df4facc069b8619f15..dc085e181d0084d39af616a515ed0a092672c2b0 100644 (file)
@@ -565,6 +565,7 @@ void cgraph_mark_if_needed (tree);
 void cgraph_analyze_function (struct cgraph_node *);
 void cgraph_finalize_compilation_unit (void);
 void cgraph_optimize (void);
+void tree_rest_of_compilation (struct cgraph_node *);
 void cgraph_mark_needed_node (struct cgraph_node *);
 void cgraph_mark_address_taken_node (struct cgraph_node *);
 void cgraph_mark_reachable_node (struct cgraph_node *);
index 70ac1f39ea4ffba7ac2d7fe9ea50125e08d25966..9d2c46c374ef8b7c0fbadd72afb221ad537669b7 100644 (file)
@@ -111,6 +111,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "output.h"
 #include "rtl.h"
 #include "tree-flow.h"
 #include "tree-inline.h"
@@ -141,6 +142,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "ipa-inline.h"
 #include "ipa-utils.h"
 #include "lto-streamer.h"
+#include "regset.h"     /* FIXME: For reg_obstack.  */
 
 static void cgraph_expand_all_functions (void);
 static void cgraph_mark_functions_to_output (void);
@@ -1768,6 +1770,94 @@ assemble_thunks_and_aliases (struct cgraph_node *node)
       }
 }
 
+/* For functions-as-trees languages, this performs all optimization and
+   compilation for FNDECL.  */
+
+void
+tree_rest_of_compilation (struct cgraph_node *node)
+{
+  tree fndecl = node->decl;
+  location_t saved_loc;
+
+  timevar_push (TV_REST_OF_COMPILATION);
+
+  gcc_assert (cgraph_global_info_ready);
+
+  /* Initialize the default bitmap obstack.  */
+  bitmap_obstack_initialize (NULL);
+
+  /* Initialize the RTL code for the function.  */
+  current_function_decl = fndecl;
+  saved_loc = input_location;
+  input_location = DECL_SOURCE_LOCATION (fndecl);
+  init_function_start (fndecl);
+
+  gimple_register_cfg_hooks ();
+
+  bitmap_obstack_initialize (&reg_obstack); /* FIXME, only at RTL generation*/
+
+  execute_all_ipa_transforms ();
+
+  /* Perform all tree transforms and optimizations.  */
+
+  /* Signal the start of passes.  */
+  invoke_plugin_callbacks (PLUGIN_ALL_PASSES_START, NULL);
+
+  execute_pass_list (all_passes);
+
+  /* Signal the end of passes.  */
+  invoke_plugin_callbacks (PLUGIN_ALL_PASSES_END, NULL);
+
+  bitmap_obstack_release (&reg_obstack);
+
+  /* Release the default bitmap obstack.  */
+  bitmap_obstack_release (NULL);
+
+  set_cfun (NULL);
+
+  /* If requested, warn about function definitions where the function will
+     return a value (usually of some struct or union type) which itself will
+     take up a lot of stack space.  */
+  if (warn_larger_than && !DECL_EXTERNAL (fndecl) && TREE_TYPE (fndecl))
+    {
+      tree ret_type = TREE_TYPE (TREE_TYPE (fndecl));
+
+      if (ret_type && TYPE_SIZE_UNIT (ret_type)
+         && TREE_CODE (TYPE_SIZE_UNIT (ret_type)) == INTEGER_CST
+         && 0 < compare_tree_int (TYPE_SIZE_UNIT (ret_type),
+                                  larger_than_size))
+       {
+         unsigned int size_as_int
+           = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (ret_type));
+
+         if (compare_tree_int (TYPE_SIZE_UNIT (ret_type), size_as_int) == 0)
+           warning (OPT_Wlarger_than_, "size of return value of %q+D is %u bytes",
+                     fndecl, size_as_int);
+         else
+           warning (OPT_Wlarger_than_, "size of return value of %q+D is larger than %wd bytes",
+                     fndecl, larger_than_size);
+       }
+    }
+
+  gimple_set_body (fndecl, NULL);
+  if (DECL_STRUCT_FUNCTION (fndecl) == 0
+      && !cgraph_get_node (fndecl)->origin)
+    {
+      /* Stop pointing to the local nodes about to be freed.
+        But DECL_INITIAL must remain nonzero so we know this
+        was an actual function definition.
+        For a nested function, this is done in c_pop_function_context.
+        If rest_of_compilation set this to 0, leave it 0.  */
+      if (DECL_INITIAL (fndecl) != 0)
+       DECL_INITIAL (fndecl) = error_mark_node;
+    }
+
+  input_location = saved_loc;
+
+  ggc_collect ();
+  timevar_pop (TV_REST_OF_COMPILATION);
+}
+
 /* Expand function specified by NODE.  */
 
 static void
@@ -1783,7 +1873,7 @@ cgraph_expand_function (struct cgraph_node *node)
   gcc_assert (node->lowered);
 
   /* Generate RTL for the body of DECL.  */
-  tree_rest_of_compilation (decl);
+  tree_rest_of_compilation (node);
 
   /* Make sure that BE didn't give up on compiling.  */
   gcc_assert (TREE_ASM_WRITTEN (decl));
index 588cfdbb6d2e0a05e8386ceff94189184d07beba..307fb64ad5792e746657cd1ca37bd992b65d3b3c 100644 (file)
@@ -29,7 +29,6 @@ extern unsigned int save_decoded_options_count;
 extern int toplev_main (int, char **);
 extern void rest_of_decl_compilation (tree, int, int);
 extern void rest_of_type_compilation (tree, int);
-extern void tree_rest_of_compilation (tree);
 extern void init_optimization_passes (void);
 extern void finish_optimization_passes (void);
 extern bool enable_rtl_dump_file (void);
index e59d1ad912b33264d9a4895b7bf4d159729a77bf..7cd3ef35c971fb2233ce016f59e51086df23a910 100644 (file)
@@ -45,7 +45,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "cfgloop.h"
 #include "except.h"
 #include "plugin.h"
-#include "regset.h"    /* FIXME: For reg_obstack.  */
 
 /* Gate: execute, or not, all of the non-trivial optimizations.  */
 
@@ -366,90 +365,3 @@ struct gimple_opt_pass pass_init_datastructures =
   0                                    /* todo_flags_finish */
  }
 };
-\f
-/* For functions-as-trees languages, this performs all optimization and
-   compilation for FNDECL.  */
-
-void
-tree_rest_of_compilation (tree fndecl)
-{
-  location_t saved_loc;
-
-  timevar_push (TV_REST_OF_COMPILATION);
-
-  gcc_assert (cgraph_global_info_ready);
-
-  /* Initialize the default bitmap obstack.  */
-  bitmap_obstack_initialize (NULL);
-
-  /* Initialize the RTL code for the function.  */
-  current_function_decl = fndecl;
-  saved_loc = input_location;
-  input_location = DECL_SOURCE_LOCATION (fndecl);
-  init_function_start (fndecl);
-
-  gimple_register_cfg_hooks ();
-
-  bitmap_obstack_initialize (&reg_obstack); /* FIXME, only at RTL generation*/
-
-  execute_all_ipa_transforms ();
-
-  /* Perform all tree transforms and optimizations.  */
-
-  /* Signal the start of passes.  */
-  invoke_plugin_callbacks (PLUGIN_ALL_PASSES_START, NULL);
-
-  execute_pass_list (all_passes);
-
-  /* Signal the end of passes.  */
-  invoke_plugin_callbacks (PLUGIN_ALL_PASSES_END, NULL);
-
-  bitmap_obstack_release (&reg_obstack);
-
-  /* Release the default bitmap obstack.  */
-  bitmap_obstack_release (NULL);
-
-  set_cfun (NULL);
-
-  /* If requested, warn about function definitions where the function will
-     return a value (usually of some struct or union type) which itself will
-     take up a lot of stack space.  */
-  if (warn_larger_than && !DECL_EXTERNAL (fndecl) && TREE_TYPE (fndecl))
-    {
-      tree ret_type = TREE_TYPE (TREE_TYPE (fndecl));
-
-      if (ret_type && TYPE_SIZE_UNIT (ret_type)
-         && TREE_CODE (TYPE_SIZE_UNIT (ret_type)) == INTEGER_CST
-         && 0 < compare_tree_int (TYPE_SIZE_UNIT (ret_type),
-                                  larger_than_size))
-       {
-         unsigned int size_as_int
-           = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (ret_type));
-
-         if (compare_tree_int (TYPE_SIZE_UNIT (ret_type), size_as_int) == 0)
-           warning (OPT_Wlarger_than_, "size of return value of %q+D is %u bytes",
-                     fndecl, size_as_int);
-         else
-           warning (OPT_Wlarger_than_, "size of return value of %q+D is larger than %wd bytes",
-                     fndecl, larger_than_size);
-       }
-    }
-
-  gimple_set_body (fndecl, NULL);
-  if (DECL_STRUCT_FUNCTION (fndecl) == 0
-      && !cgraph_get_node (fndecl)->origin)
-    {
-      /* Stop pointing to the local nodes about to be freed.
-        But DECL_INITIAL must remain nonzero so we know this
-        was an actual function definition.
-        For a nested function, this is done in c_pop_function_context.
-        If rest_of_compilation set this to 0, leave it 0.  */
-      if (DECL_INITIAL (fndecl) != 0)
-       DECL_INITIAL (fndecl) = error_mark_node;
-    }
-
-  input_location = saved_loc;
-
-  ggc_collect ();
-  timevar_pop (TV_REST_OF_COMPILATION);
-}