https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64255
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Status|WAITING |NEW CC| |trippels at gcc dot gnu.org Target Milestone|--- |5.0 Summary|failures with -O2 |[5 Regression] failures |optimization on i >= 0 ? |with -O2 optimization on i |(unsigned long) i : - |>= 0 ? (unsigned long) i : |(unsigned long) i |- (unsigned long) i Severity|major |normal --- Comment #5 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- Confirmed. Testcase can be combined to one file: markus@x4 tmp % cat test.c #include <stdio.h> __attribute__((noinline)) int f (long i) { if (i == 0) { return 0; } else { unsigned long ai; ai = i >= 0 ? (unsigned long) i : - (unsigned long) i; if ((i >= 0 ? (unsigned long) i : - (unsigned long) i) != ai) printf ("Error!\n"); printf ("i = %ld\n", i); printf ("ai = %lX\n", ai); return 0; } } int main (void) { f (1); return 0; }