On Fri, 31 Mar 2017, Sebastian Pop wrote: > On Fri, Mar 31, 2017 at 12:06 PM, Richard Biener <rguent...@suse.de> wrote: > > That's not a default definition but bogus SSA form. You have to fix that, > > not this symptom. > > > > Ok. > It also crashes when adding a call to verifty_ssa > > diff --git a/gcc/auto-profile.c b/gcc/auto-profile.c > index 4b21340c6f0..b834a40af4d 100644 > --- a/gcc/auto-profile.c > +++ b/gcc/auto-profile.c > @@ -1589,6 +1590,7 @@ afdo_annotate_cfg (const stmt_set &promoted_stmts) > static void > early_inline () > { > + verify_ssa (true, true); > compute_inline_parameters (cgraph_node::get (current_function_decl), true); > unsigned todo = early_inliner (cfun); > if (todo & TODO_update_ssa_any) > > The crash is on: > > gcc_assert (!need_ssa_update_p (cfun)); > > and after adding a call to update the SSA, it finishes compilation > without errors. > I am testing the following patch: > > * auto-profile.c (early_inline): Call update_ssa. > > --- a/gcc/auto-profile.c > +++ b/gcc/auto-profile.c > @@ -1589,6 +1589,8 @@ afdo_annotate_cfg (const stmt_set &promoted_stmts) > static void > early_inline () > { > + if (need_ssa_update_p (current_function_decl)) > + update_ssa (TODO_update_ssa); > compute_inline_parameters (cgraph_node::get (current_function_decl), true); > unsigned todo = early_inliner (cfun); > if (todo & TODO_update_ssa_any)
Does the following fix it? Index: gcc/auto-profile.c =================================================================== --- gcc/auto-profile.c (revision 246642) +++ gcc/auto-profile.c (working copy) @@ -1511,7 +1511,9 @@ afdo_vpt_for_early_inline (stmt_set *pro if (has_vpt) { - optimize_inline_calls (current_function_decl); + unsigned todo = optimize_inline_calls (current_function_decl); + if (todo & TODO_update_ssa_any) + update_ssa (TODO_update_ssa); return true; } afdo really _grossly_ over-does inlining. And it looks like a total hack to me. It iterates PARAM_EARLY_INLINER_MAX_ITERATIONS but early_inliner does that itself already..