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

--- Comment #2 from Stefan Schulze Frielinghaus <stefansf at gcc dot gnu.org> 
---
Finally a more manageable reproducer:

long x = -0x7fffffff - 1;
int main (void)
{
  long y = x % (-0xf - 1);
  if (-0x7fffffff - 1 + y == x == 0)
    __builtin_abort ();
}

If compiled with -O1 -march=z13 and r15-2889 execution is successful and fails
with r15-2890 with r15-2903 manually applied on top.  I haven't looked much
into it but at least they deviate in ce1 where I see

if-conversion succeeded through noce_convert_multiple_sets

Of course, might be still a latent bug/something else.

Reply via email to