Patch updated to add a wrapper early_inline function

Index: gcc/auto-profile.c
===================================================================
--- gcc/auto-profile.c (revision 208726)
+++ gcc/auto-profile.c (working copy)
@@ -1449,8 +1449,6 @@ afdo_vpt_for_early_inline (stmt_set *promoted_stmt
       calculate_dominance_info (CDI_POST_DOMINATORS);
       calculate_dominance_info (CDI_DOMINATORS);
       rebuild_cgraph_edges ();
-      update_ssa (TODO_update_ssa);
-      compute_inline_parameters (cgraph_get_node
(current_function_decl), true);
       return true;
     }
   else
@@ -1516,6 +1514,14 @@ afdo_annotate_cfg (const stmt_set &promoted_stmts)
 }
 }  /* namespace autofdo.  */

+static void early_inline ()
+{
+  compute_inline_parameters (cgraph_get_node (current_function_decl), true);
+  unsigned todo = early_inliner ();
+  if (todo & TODO_update_ssa_any)
+    update_ssa (TODO_update_ssa);
+}
+
 /* Use AutoFDO profile to annoate the control flow graph.
    Return the todo flag.  */

@@ -1610,11 +1616,10 @@ auto_profile (void)
   if (!flag_value_profile_transformations
       || !autofdo::afdo_vpt_for_early_inline (&promoted_stmts))
     break;
-  early_inliner ();
+  early_inline ();
  }

-      compute_inline_parameters (cgraph_get_node
(current_function_decl), true);
-      early_inliner ();
+      early_inline ();
       autofdo::afdo_annotate_cfg (promoted_stmts);
       compute_function_frequency ();
       update_ssa (TODO_update_ssa);

On Thu, Mar 20, 2014 at 11:36 AM, Xinliang David Li <davi...@google.com> wrote:
> I think the right way to fix this is to wrap the call to early_inliner
> and check the TODO flags.  See execute_function_todo:
>
>  if (flags & TODO_cleanup_cfg)
>     {
>       cleanup_tree_cfg ();
>
>       if (!(flags & TODO_update_ssa_any) && need_ssa_update_p (cfun))
>         flags |= TODO_update_ssa;
>     }
>
>   if (flags & TODO_update_ssa_any)
>     {
>       unsigned update_flags = flags & TODO_update_ssa_any;
>       update_ssa (update_flags);
>       cfun->last_verified &= ~TODO_verify_ssa;
>     }
>
> David
>
> On Thu, Mar 20, 2014 at 10:39 AM, Dehao Chen <de...@google.com> wrote:
>> This patch calls update_ssa before compute_inline_paramters.
>>
>> Bootstrapped and perf test on-going.
>>
>> OK for google-4_8?
>>
>> Thanks,
>> Dehao
>>
>> Index: gcc/auto-profile.c
>> ===================================================================
>> --- gcc/auto-profile.c (revision 208726)
>> +++ gcc/auto-profile.c (working copy)
>> @@ -1613,6 +1613,7 @@ auto_profile (void)
>>    early_inliner ();
>>   }
>>
>> +      update_ssa (TODO_update_ssa);
>>        compute_inline_parameters (cgraph_get_node (current_function_decl),
>> true);
>>        early_inliner ();
>>        autofdo::afdo_annotate_cfg (promoted_stmts);
>>

Reply via email to