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

Reply via email to