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

            Bug ID: 101972
           Summary: wrong code at -O2 on x86_64-linux-gnu
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: qrzhang at gatech dot edu
  Target Milestone: ---

It appears to be a regression in gcc-9. gcc-8 works fine.


$ gcc-trunk -O2 abc.c ; ./a.out
0

$ gcc-trunk abc.c ; ./a.out
30

$ gcc-8 -O2 abc.c ; ./a.out
30

$ cat abc.c
int a, b, c, d, f;
static short e = 63891;
char g = 30;
unsigned h(i, j) { return i << j; }
int *l(int *);
void m() {
  a = 0;
  for (; a >= 0; a--) {
    int *k = &b;
    *k = e < 0;
  }
  c = b;
  l(&c);
}
int *l(int *i) {
  d = 2;
  for (; d <= 6; d++) {
    if (h(d, *i) <= d)
      ;
    else
      continue;
    g = 0;
    return &f;
  }
}
int main() {
  m();
  printf("%d\n", g);
}

Reply via email to