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?

Reply via email to