https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80826
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu.org --- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- Looking at callgrind profile shows that early inlining is the TV_INTEGRATION culprit with expand_call_inline -> cgraph_node::remove -> .. -> cgraph_node::find_replacement () being the culript showing /* Update clone_of pointers. */ n = new_clones; while (n) { n->clone_of = next_inline_clone; n = n->next_sibling_clone; } as hottest. The whole function looks like having bad complexity if there are a lot of inline clones (we call the same function very many times and likely inline all of them). I suspect handling this higher up in the chain would be more efficient than doing this in expand_call_inline ...