https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120987
--- Comment #32 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Sam James from comment #31) > (In reply to Andrew Pinski from comment #30) > > for (n = edge->caller; n->inlined_to; n = n->callers->caller) > > - flags |= flags_from_decl_or_type (n->decl); > > - flags |= flags_from_decl_or_type (n->decl); > > + flags |= flags_from_decl_or_type (n->decl) & flags_mask; > > + flags |= flags_from_decl_or_type (n->decl) & flags_mask; > > It still looks odd because n is left as n->callers->caller, so you get it > applied twice in that case. Can you add a comment? Yes I will add one. But basically that is the outer most function where this was inlined into (in this case). so we going from inner most (edge->caller), to the outer most (which has a null inlined_to). The second outer most has a non-null inlined_to. Going one further you get a null :).
