https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102844
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |needs-bisection --- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- So the issue is that the SSA form is invalid at the start of VRP2 - we have <bb 16> [local count: 25270028]: _45 = (signed char) nd_5; if (_45 < 0) goto <bb 13>; [33.33%] else goto <bb 14>; [66.67%] <bb 10> [local count: 25267450]: <L1>: ta = 0; goto <bb 13>; [100.00%] <bb 13> [local count: 25265782]: <L4>: nd.7_10 = _45; _11 = _45 + -128; _12 = (unsigned char) _11; dic = _12; goto <bb 15>; [100.00%] but there's a PHI missing for _45 - the definition site does not dominate the use. (gdb) p verify_ssa (true, true) t.c: In function 'snod.constprop': t.c:18:22: error: definition in block 16 does not dominate use in block 13 18 | static unsigned char snod(unsigned char cd, unsigned char *tl, unsigned char *ic) | ^~~~ for SSA_NAME: _45 in statement: nd.7_10 = _45; and the issue pops up after DOM3. It would be nice to bisect with checking enabled or -fchecking - Martin?