https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95848
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |manu at gcc dot gnu.org Summary|missing -Wuninitialized |missing -Wuninitialized |passing structs by value |passing structs by value | |(VOPS) --- Comment #1 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- This uses VOPS, so it probably needs new code to handle that. Perhaps PR41953 h () { struct S s; <bb 2> [local count: 1073741824]: [./example.cpp:7:3] # DEBUG BEGIN_STMT [./example.cpp:8:3] # DEBUG BEGIN_STMT [./example.cpp:8:6] # .MEM_2 = VDEF <.MEM_1(D)> fs (s); [tail call] # .MEM_3 = VDEF <.MEM_2> s ={v} {CLOBBER}; [./example.cpp:9:1] # VUSE <.MEM_3> return; } There is no difference in the logs that explain why g() is treated differently, so that must be a special case for const* parameters.