https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127454

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jamborm at gcc dot gnu.org
           Priority|P3                          |P2

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
We have

<bb 2> [local count: 1073741824]:
sp$refaulted_56 = .DEFERRED_INIT (8, 2, &"sp"[0]);
pv$refaulted_8 = .DEFERRED_INIT (8, 2, &"pv"[0]);
...

<bb 8> [local count: 1073741824]:
# iftmp.0_38 = PHI <_87(7), 1(14)>
sp$16_7 = .DEFERRED_INIT (4, 2, &"sp"[0]);
sp = .DEFERRED_INIT (24, 2, &"sp"[0]);
pv$16_119 = .DEFERRED_INIT (4, 2, &"pv"[0]);
pv = .DEFERRED_INIT (24, 2, &"pv"[0]);
MEM <long unsigned int> [(void *)&sp] = sp$refaulted_56;
MEM <long unsigned int> [(void *)&sp + 8B] = sp$refaulted_56;
MEM <int> [(void *)&sp + 16B] = sp$16_7;
read_ctrl_pos (lruvec_2(D), iftmp.0_38, 0, 0, 2, &sp);

so that's clearly stored uninitialized.  But as the bisect suggests
it might be SRA introducing re-materialization before the read_ctrl_pos ()
call, and instead of opting to _not_ initialize the .DEFERRED_INIT-ialized
members it does it the way it does:

+  sp_24 = .DEFERRED_INIT (8, 2, &"sp"[0]);
+  sp$8_16 = .DEFERRED_INIT (8, 2, &"sp"[0]);
+  sp$16_7 = .DEFERRED_INIT (4, 2, &"sp"[0]);
   sp = .DEFERRED_INIT (24, 2, &"sp"[0]);
...
+  MEM <long unsigned int> [(void *)&sp] = sp_24;
+  MEM <long unsigned int> [(void *)&sp + 8B] = sp$8_16;
+  MEM <int> [(void *)&sp + 16B] = sp$16_7;
   read_ctrl_pos (lruvec_2(D), iftmp.0_38, 0, 0, 2, &sp);

Reply via email to