https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58416
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Keywords| |wrong-code
Last reconfirmed| |2024-02-20
CC| |jamborm at gcc dot gnu.org,
| |rguenth at gcc dot gnu.org
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Reconfirmed with the comment#5 testcase. ESRA does
int main ()
{
+ long double x$d;
unsigned char * p;
union u y;
union u x;
@@ -25,9 +20,9 @@
int _2;
<bb 2> :
- x.d = 0.0;
- x.s.s = "xxxxxxxxxxxxxxxx";
- y = x;
+ x$d_3 = 0.0;
+ x$d_16 = MEM[(char[16] *)"xxxxxxxxxxxxxxxx"];
+ MEM[(union u *)&y] = x$d_16;
and the value re-interpretation goes off. Martin - we may have dups of this
but SRA shouldn't do this (it possibly gets confused by the x.d store)?