https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83477
Bug ID: 83477 Summary: [8 Regression] Wrong code w/ -O1 Product: gcc Version: 8.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-8.0.0-alpha20171217 snapshot (r255766) produces wrong code when compiling the following snippet w/ -O1: int yf = 0; void pl (int q5, int nd) { unsigned int hp = q5; int zx = (q5 == 0) ? hp : (hp / q5); yf = ((nd < 2) * zx != 0) ? nd : 0; } int main (void) { pl (1, !yf); if (yf != 1) __builtin_abort (); return 0; } % gcc-8.0.0-alpha20171217 -O0 -o good l2scdk9e.c && ./good % echo $? 0 % gcc-8.0.0-alpha20171217 -O1 -o bad l2scdk9e.c && ./bad zsh: abort (core dumped) ./bad