On Thu, Mar 20, 2014 at 1:02 PM, Xinliang David Li <davi...@google.com> wrote: > On Thu, Mar 20, 2014 at 12:40 PM, Dehao Chen <de...@google.com> wrote: >> 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); > > Is this update still needed?
Yes because in autofdo::afdo_annotate_cfg, gimple_value_profile_transformations is invoked. Dehao > > David > >> >> 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); >>>>