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

Reply via email to