[Bug tree-optimization/106073] New: wrong code at -O3 on x86_64-linux-gnu
zhendong.su at inf dot ethz.ch
gcc-bugzilla@gcc.gnu.org
Fri Jun 24 08:06:01 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106073
Bug ID: 106073
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: zhendong.su at inf dot ethz.ch
Target Milestone: ---
It seems to be a regression from 11.*. The test is still quite complicated, but
seems difficult to be reduced much further.
[507] % gcctk -v
Using built-in specs.
COLLECT_GCC=gcctk
COLLECT_LTO_WRAPPER=/local/suz-local/software/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-trunk/configure --disable-bootstrap
--prefix=/local/suz-local/software/local/gcc-trunk --enable-sanitizers
--enable-languages=c,c++ --disable-werror --disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.0.0 20220624 (experimental) [master r12-4647-g3f861a5c8fd] (GCC)
[508] %
[508] % gcctk -O2 small.c; ./a.out
[509] %
[509] % gcctk -O3 small.c
[510] % ./a.out
Aborted
[511] %
[511] % cat small.c
int a, f = 1, h, l, m = 1, o, r = 4, q, s, x, e, aa, ab, ac, *ad, ae = 5, **y,
**af, ag, ah, ai, aj;
static int c[6], d, g[6][5], n, *v = &s, ak;
volatile int p;
const volatile int al;
static volatile int t, u, w = 3, z, am, an;
static int ao();
void ap();
static void aq() {
int ar[4] = {6, 6, 6, 6}, as[1], i, j;
as[0] = 0;
if (m) {
int at[11] = {4, 4, 6, 5, 7, 0, 7, 6, 7, 6, 6}, *au, *av[7], k;
au = (int*) &au;
for (i = 0; i < 1; i++)
for (j = 0; j < 1; j++)
for (k = 0; k < 7; k++) {
(t || n) && u;
av[k] = 0;
}
y = av;
while (o) {
int *b[2] = {as, ar};
*af = at;
}
m = 0;
}
}
inline void ap() {
for (; l <= 4; l++) {
*v = 0;
aq();
if (a)
break;
for (; q; q++)
;
}
}
int ao() {
int be = 0, j;
if (n)
aa = d = 0;
l = 0;
for (; be < 2; be++) {
int bf[7][2];
for (ai = 0; ai < 7; ai++)
for (j = 0; j < 2; j++)
bf[ai][j] = 5;
if (be) {
for (; h >= 0; h--) {
while (z >= w) {
ap();
*ad = 0;
}
ap();
}
return bf[3][0];
}
if (bf[3][0])
continue;
while (1)
;
}
return 0;
}
static void aw() {
for (; ah; ah++) {
p = 0;
p = 0;
}
int ax = ~e;
L1:
e = a = 0;
L2:
if (!r)
goto L3;
if (!ax)
goto L2;
if (d)
goto L1;
if (!ae)
goto L1;
if (w && x <= 808 && f)
ag = ao();
g[0][4] = ag;
if (a) {
int bd;
n++;
while (n)
for (bd = 0; bd < 7; bd++) {
am;
am;
am;
am;
d = c[d ^ am];
}
} else {
L3:
an;
for (; ak; ak++) {
int bc = 7;
for (; bc >= 0; bc--) {
al;
al;
d = f && an;
an;
}
}
}
}
int main() {
int k;
for (; aj < 6; aj++)
c[0] = aj;
aw();
for (aj = 0; aj < 6; aj++)
for (k = 0; k < 5; k++)
d = c[d ^ g[aj][k]];
if (d != 5)
__builtin_abort();
return 0;
}
More information about the Gcc-bugs
mailing list