[Bug tree-optimization/94125] New: wrong code at -O3 on x86_64-linux-gnu
qrzhang at gatech dot edu
gcc-bugzilla@gcc.gnu.org
Tue Mar 10 16:54:33 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94125
Bug ID: 94125
Summary: wrong code at -O3 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 9. Gcc-8.3 works fine.
Bisection points to g:8f70fdc31a7b0099e7322d0aba94830fb08f4c88
$ gcc-trunk -v
gcc version 10.0.1 20200310 (experimental) [master revision
cc5c935937d:88ecfc48953:3654d49d0ff651b2a78401bc2430428711e7d2eb] (GCC)
$ gcc-trunk abc.c ; ./a.out
0
0
0
0
0
0
0
0
$ gcc-trunk -O3 abc.c ; ./a.out
0
0
0
4
0
0
0
0
$ gcc-8 -O3 abc.c ; ./a.out
0
0
0
0
0
0
0
0
$ cat abc.c
int printf(const char *, ...);
int *a;
char b, f;
static char c;
short d[1][8][1];
int **e = &a;
short *g = &d[0][3][0];
unsigned char **h;
int i;
int main() {
unsigned char *j = &b;
int k[] = {0, 0, 0, 4, 0, 0};
if (e) {
unsigned char **l = &j;
c = 2;
for (; c >= 0; c--) {
**l = f;
*g = k[c + 3];
k[c + 1] = 0;
}
} else {
unsigned char **m = &j;
for (;;)
h = m;
}
for (; i < 8; i++)
printf("%d\n", d[0][i][0]);
}
More information about the Gcc-bugs
mailing list