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

            Bug ID: 111469
           Summary: Wrong code at -Os on x86_64-linux-gnu since
                    r14-573-g69f1a8af45
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: shaohua.li at inf dot ethz.ch
                CC: pinskia at gcc dot gnu.org
  Target Milestone: ---

gcc at -Os produced the wrong code.

Bisected to r14-573-g69f1a8af45

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

$ cat a.c
int printf(const char *, ...);
int a;
long b, c, e, f;
char *g;
unsigned short h = 5;
static unsigned short *i = &h;
unsigned j;
long k(long m, long n) {
  if (n)
    e = m;
  c = e;
  return e;
}
char o() {
  char l;
  while (f)
    ;
  l = *g;
  return l;
}
int main() {
  int p;
  int q;
  for (; j - 9 >= 29; j = k(-95, *i) + 127) {
    *i || o();
    long d = h;
    p = d == 0 ? 0 : b % d;
    q = p;
    int *r[1] = {&q};
  }
  printf("%d\n", a);
}
$
$ gcc a.c && ./a.out
0
$ gcc a.c -Os && ./a.out
segmentation fault
$

Reply via email to