[Bug tree-optimization/80181] [7 Regression] ICE in set_lattice_value, at tree-ssa-ccp.c:505

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Mar 27 09:10:00 GMT 2017


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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok, so we have

dl_7 = vp_2 ^ _1;
dl_8 = dl_7 ^ vp_2;

where in the first iteration dl_7 is optimistically _1 (vp_2 is 0) and
thus this gets simplified to dl_7 (CONSTANT).  While
in the 2nd iteration it is VARYING, then this gets simplified to _1
(CONSTANT) which has already been fully propagated and thus gets its
lattice value used (UNDEFINED).  So we get a bogus lattice transition
CONSTANT -> UNDEFINED.

There's a missed optimization that we do not treat XOR as UNDEFINED if
one operand is undefined.  That fixes the testcase.


More information about the Gcc-bugs mailing list