The patch is ok. David
On Thu, Mar 20, 2014 at 1:10 PM, Dehao Chen <de...@google.com> wrote: > 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); >>>>>