https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94122
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2020-03-10
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
This works for me with GCC 9. On trunk this is wrong FRE:
Value numbering stmt = _3 = MEM[(unsigned char *)&x];
Setting value number of _3 to 127 (changed)
Value numbering stmt = _4 = _3 + 1;
Match-and-simplified _3 + 1 to 128
RHS _3 + 1 simplified to 128
Setting value number of _4 to 128 (changed)
Value numbering stmt = MEM[(unsigned char *)&x] = _4;
No store match
Value numbering store MEM[(unsigned char *)&x] to 128
Setting value number of .MEM_12 to .MEM_12 (changed)
Value numbering stmt = x.2_5 = x;
Successfully combined 2 partial definitions
Setting value number of x.2_5 to 0 (changed)
Value numbering stmt = _13 = MEM <unsigned int> [(char * {ref-all})&x];
Setting value number of _13 to 847249408 (changed)
possibly caused by real_{to,from}_target doing normalization during
encoding/decoding? (that would IMHO be wrong?)