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

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> ---
No, I think the issue is that ESRA leaves e.f0 alone:

  e$f3_7 = e.f3;
  e$f0$f4_8 = e.f0.f4;
  _1 = e$f0$f4_8;
  _2 = (unsigned char) _1;
  e$f3_9 = _2;
  e.f0 = g_50;
  e$f3_10 = MEM <uint8_t> [(struct S1 *)&g_50];
  e$f0$f4_11 = MEM <int32_t> [(struct S1 *)&g_50 + 24B];
  MEM <uint8_t> [(union U8 *)&e] = e$f3_10;
  MEM <int32_t> [(union U8 *)&e + 24B] = e$f0$f4_11;
  g_16 = e.f0;

it looks like it materializes the e.f0 = g_15 copy but fails to elide that
(maybe assuming sth else will?)?  And then for some reason the final
g_16 = e.f90 copy isn't replaced?!

So somehow SRAs heuristics go off.

Martin?

Reply via email to