https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117710
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org Version|unknown |15.0 Keywords| |missed-optimization --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Wow, what a spaghetti. int std::function<int(int)>::operator() (const struct function * const this, int __args#0) { int (*<T83c2>) (const union _Any_data & {ref-all}, int &) _1; const union _Any_data * {ref-all} _2; bool (*<T325d>) (union _Any_data & {ref-all}, const union _Any_data & {ref-all}, _Manager_operation) _5; int _7; <bb 2> [local count: 1073741824]: _5 = MEM[(const struct _Function_base *)this_3(D)]._M_manager; if (_5 == 0B) I wonder why this part wasn't candidate for partial inlining though? Maybe we should mark std::function::operator () as always-inline ...