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