https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108667
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- This is partly caused by not inlining everything as main is marked as called once. If instead I call main, main1, the warning goes away and the following call is inlined now: std::_Function_handler<void(), main()::<lambda()> >::_M_manager (&MEM[(struct function *)&s + 32B].D.47025._M_functor, &D.47426.D.47025._M_functor, 2); The warning in this case is about D.47426 which does not have any initialization before the call here. Note the call with last operand as 2 does not actually do anything and just returns. I don't know the best way to solve this specific case as it depends on inlining heurstics. Question for the reporter, was this a reduction from some real code or did you just notice the warning while testing some code?