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

            Bug ID: 115758
           Summary: Segmentation fault with -O2
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: luwei6 at nuaa dot edu.cn
  Target Milestone: ---

fail.c:
#include <stdio.h>
#include<stdint.h>
int32_t a[10][10][10] = {0};
int32_t b = 0;
uint64_t **c;
uint64_t ***d = &c;
int16_t e = 1;
int16_t *f = &e;
uint64_t g;
uint64_t h;
uint64_t l[1];
const uint64_t **m;
void n() {
  int32_t *o = &b;
  if (*f) {
    const uint64_t *p[] = {&l[1], &l[1], &l[1], &g, &h, &g, &l[1]};
    const uint64_t **q = &p[3];
    int32_t r[6][3][4];
    r[0][0][0] = ++*d != (m = q);
  } 
  *o = **m;
}
int main() {
  int i = 1;
  int j = 1;
  int k = 1;
  n();
  for (; i < 5; i++)
    for (j = 0; j < 5; j++)
      for (k = 0; k < 5; k++)
        printf("a[%d][%d][%d] = %d\n", i, j, k, a[i][j][k]);
  return 0;
}

$ gcc-trunk fail.c -w -O2 && ./a.out
Segmentation fault
$ gcc-trunk fail.c -w -O3 && ./a.out
Segmentation fault

And this is This is the link to Compiler Explorer:
https://godbolt.org/z/7fjef489q

Reply via email to