IPA inline transform does not account for the fact that execute_fixup_cfg
may return TODO_update_ssa.  Fixed as follows.

Bootstrap and regtest running on x86_64-unknown-linux-gnu.

Richard.

2012-01-30  Richard Guenther  <rguent...@suse.de>

        PR tree-optimization/52045
        * ipa-inline-transform.c (inline_transform): Call execute_fixup_cfg
        before computing final todo.

Index: gcc/ipa-inline-transform.c
===================================================================
--- gcc/ipa-inline-transform.c  (revision 183695)
+++ gcc/ipa-inline-transform.c  (working copy)
@@ -369,11 +369,13 @@ inline_transform (struct cgraph_node *no
     todo = optimize_inline_calls (current_function_decl);
   timevar_pop (TV_INTEGRATION);
 
+  cfun->always_inline_functions_inlined = true;
+  cfun->after_inlining = true;
+  todo |= execute_fixup_cfg ();
+
   if (!(todo & TODO_update_ssa_any))
     /* Redirecting edges might lead to a need for vops to be recomputed.  */
     todo |= TODO_update_ssa_only_virtuals;
 
-  cfun->always_inline_functions_inlined = true;
-  cfun->after_inlining = true;
-  return todo | execute_fixup_cfg ();
+  return todo;
 }

Reply via email to