https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107290
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |24639 Keywords| |diagnostic Status|UNCONFIRMED |NEW Last reconfirmed| |2022-10-17 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- I can confirm the diagnostics at -O{1,2,3}. We diagnose the aggregate copy in <bb 2> [local count: 1073741824]: MEM[(struct plain_array *)&p] ={v} {CLOBBER}; MEM[(struct DenseStorage *)&D.103583] ={v} {CLOBBER}; MEM[(struct DenseStorage *)&D.103583].m_data = MEM[(const struct DenseStorage &)&p].m_data; Foo::Foo (&Foo, &D.103583); D.103583 ={v} {CLOBBER(eol)}; p ={v} {CLOBBER(eol)}; Foo ={v} {CLOBBER(eol)}; return; clearly 'p' is completely uninitialized and we copy m_data from it to the value argument of Foo::Foo. 'p' gets initialized by struct Points p; <<cleanup_point <<< Unknown tree: expr_stmt Eigen::Array<float, 3, 1>::Array (&p) >>>>>; I don't know enough C++ to decipher what supposedly initializes m_data. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639 [Bug 24639] [meta-bug] bug to track all Wuninitialized issues