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

            Bug ID: 113756
           Summary: Wrong code at -O2 on x86_64-linux-gnu since
                    r14-2780-g39f117d6c87
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: shaohua.li at inf dot ethz.ch
                CC: aldyh at redhat dot com
  Target Milestone: ---

gcc at -O2 produced the wrong code.

Bisected to r14-2780-g39f117d6c87

Compiler explorer: https://godbolt.org/z/qWd4196h6

% cat reduced.c
int printf(const char *, ...);
int d, e, i, k, l = -8;
char h, j;
int m(int n, int o, int p3) {
  int a = o - p3, b = n - p3, c = a + b, f = -b, g = c < 0 ? -c : c;
  return a <= f && a <= g ? o : p3;
}
void q(int *n, unsigned short o) {
  unsigned p = 8896;
  for (; e >= 0; e--)
    p = 5377;
  for (; h <= 0; h++)
    for (; j <= 0; j++) {
      *n = 1611581749;
      i = m(34, p - 5294, *n - 1611581687);
      k = i + p + 65535 + o + *n - 1611718251;
      printf("%d\n", k);
    }
}
int main() {
  q(&l, l);
}
%
% gcc -O0 reduced.c &&./a.out
0
% gcc -O2 reduced.c &&./a.out
21
%

Reply via email to