[Bug middle-end/83477] New: [8 Regression] Wrong code w/ -O1

asolokha at gmx dot com gcc-bugzilla@gcc.gnu.org
Tue Dec 19 06:24:00 GMT 2017


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


More information about the Gcc-bugs mailing list