The value of "l_1081" should be 7. However, with "-O3", the debugger outputs a wrong value of 2815.
= ICC and gdb versions =
$ ~/intel/bin/icc -v
icc version 19.0.3.199 (gcc version 7.3.0 compatibility)
$ ~/intel/bin/gdb-ia -v
GNU gdb (GDB) 8.0.1.19.ac119e063b+77c0a7e7d9+d6612c60e0+f9aa08edde
= Files to reproduce =
$ cat abc.c
int a, d;
int b[1];
short c;
char e, f;
char *g;
void h() {
short l_1081 = 7;
optimize_me_not();
for (; 0;) {
int i[] = {6};
for (;;)
for (;;) {
int j[][1] = {
j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j,
j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j,
j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j,
j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j,
j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j,
j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j,
j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j, j,
j, j, j, j, j, j, j, j, j, j, j, j, j, j, 0, b};
int k[][1] = {k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k,
k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k,
k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k,
k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k,
k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k,
k, k, k, k, k, k, k, k, k, k, k, k, &c, &l_1081, 1};
int l[][1][3] = {{i, a}, {i, a}, {i, a}, {i, a}, {i, a}, {i, a}, 7,
i, a, {i, a}, {i, a}, {i, a}, {i, a}, {i, a},
{i, a}, {i, a}, 7, i, a, {i, a}, {i, a},
{i, a}, {i, a}, {i, a}, {i, a}, {i, a}, 7, i,
a, i, a, i};
int m = l;
short n[] = {0};
char *o = (*o = e = (g[2] = o) && f & n >= d ^ 1) | 1;
}
}
}
int main() { h(); }
$ cat cmds
b 8
r
p l_1081
kill
q
$ cat outer.c
optimize_me_not() {}
# Expected output#
$ ~/intel/bin/icc abc.c outer.c -g
$ ~/intel/bin/gdb-ia -x cmds -batch a.out
Breakpoint 1 at 0x400624: file abc.c, line 8.
Breakpoint 1, h () at abc.c:8
8 optimize_me_not();
$1 = 7
#Wrong output at -O3#
$ ~/intel/bin/icc abc.c outer.c -g -O3
$ ~/intel/bin/gdb-ia -x cmds -batch a.out
Breakpoint 1 at 0x400b10: file abc.c, line 8.
Breakpoint 1, h () at abc.c:8
8 optimize_me_not();
$1 = 2815