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 ...