> > > diff --git a/gcc/ipa-inline.cc b/gcc/ipa-inline.cc > > > index dc120e6da5a..9502a21c741 100644 > > > --- a/gcc/ipa-inline.cc > > > +++ b/gcc/ipa-inline.cc > > > @@ -682,7 +682,7 @@ can_early_inline_edge_p (struct cgraph_edge *e) > > > } > > > gcc_assert (gimple_in_ssa_p (DECL_STRUCT_FUNCTION (e->caller->decl)) > > > && gimple_in_ssa_p (DECL_STRUCT_FUNCTION (callee->decl))); > > > - if (profile_arc_flag > > > + if ((profile_arc_flag || condition_coverage_flag) > > > && ((lookup_attribute ("no_profile_instrument_function", > > > DECL_ATTRIBUTES (caller->decl)) == > > > NULL_TREE) > > > != (lookup_attribute ("no_profile_instrument_function", > > > > tree-inline should also copy the cond tags, since always_inline > > functions are inlined even at -O0. But I think this can be done > > incrementally. > > > > Patch is OK. > > Thanks a lot and sorry for taking so long on this one. > > Honza > > I guess you mean that since tree-inlining happen after gimplification (does > it?) that the basic condition -> condition expression association should > also fold in the now-inlined conditions?
Yes, if you declare function always_inline the order of event is as follows 1) gimplification of both functions 2) ssa constructions 3) early inlining where inline happens 4) profile instrumentation. Honza > > Thanks for the review - I'll do a final test run and install the patch.