re PR tree-optimization/36100 (always_inline attribute is broken at -O0)
authorJan Hubicka <jh@suse.cz>
Fri, 2 May 2008 11:08:22 +0000 (13:08 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 2 May 2008 11:08:22 +0000 (11:08 +0000)
PR bootstrap/36100
* ipa-inline.c (inline_generate_summary): Make static.
(inline_transform): Do not call inlining at -O0; make static.
* passes.c (execute_todo): Add sanity check.
(execute_one_ipa_transform_pass): Execute proper flags.

From-SVN: r134885

gcc/ChangeLog
gcc/ipa-inline.c
gcc/passes.c

index aa08080ea1b90efe63a5c17f4cdd79ae65d669b6..28a39b347cd97aa80dd8048f21e42a57d7267e7b 100644 (file)
@@ -1,3 +1,11 @@
+2008-05-01  Jan Hubicka  <jh@suse.cz>
+
+       PR bootstrap/36100
+       * ipa-inline.c (inline_generate_summary): Make static.
+       (inline_transform): Do not call inlining at -O0; make static.
+       * passes.c (execute_todo): Add sanity check.
+       (execute_one_ipa_transform_pass): Execute proper flags.
+
 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
 
        * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
index f0a7819cacf6e328d536265a5734e1948cc04976..81246d8d1a9d4aad14dc1ba57ad56a0206e4e6bd 100644 (file)
@@ -1560,7 +1560,7 @@ struct gimple_opt_pass pass_inline_parameters =
 };
 
 /* Note function body size.  */
-void
+static void
 inline_generate_summary (struct cgraph_node *node ATTRIBUTE_UNUSED)
 {
   compute_inline_parameters ();
@@ -1568,17 +1568,12 @@ inline_generate_summary (struct cgraph_node *node ATTRIBUTE_UNUSED)
 }
 
 /* Apply inline plan to function.  */
-int
+static unsigned int
 inline_transform (struct cgraph_node *node)
 {
   unsigned int todo = 0;
   struct cgraph_edge *e;
 
-  /* Even when not optimizing, ensure that always_inline functions get inlined.
-   */
-  if (!optimize)
-   cgraph_decide_inlining_incrementally (node, INLINE_SPEED, 0);
-
   /* We might need the body of this function so that we can expand
      it inline somewhere else.  */
   if (cgraph_preserve_function_body_p (current_function_decl))
index 196e5a70a714c5c4f8059908def89898da61c474..0ca26fe35a0a277fcedc9ab3a0f7919bc2be4784 100644 (file)
@@ -999,11 +999,15 @@ execute_todo (unsigned int flags)
      to analyze side effects.  The full removal is done just at the end
      of IPA pass queue.  */
   if (flags & TODO_remove_functions)
-    cgraph_remove_unreachable_nodes (true, dump_file);
+    {
+      gcc_assert (!cfun);
+      cgraph_remove_unreachable_nodes (true, dump_file);
+    }
 
   if ((flags & TODO_dump_cgraph)
       && dump_file && !current_function_decl)
     {
+      gcc_assert (!cfun);
       dump_cgraph (dump_file);
       /* Flush the file.  If verification fails, we won't be able to
         close the file before aborting.  */
@@ -1162,7 +1166,7 @@ execute_one_ipa_transform_pass (struct cgraph_node *node,
   pass_init_dump_file (pass);
 
   /* Run pre-pass verification.  */
-  execute_todo (pass->todo_flags_start);
+  execute_todo (ipa_pass->function_transform_todo_flags_start);
 
   /* If a timevar is present, start it.  */
   if (pass->tv_id)