https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90074
Bug ID: 90074 Summary: wrong debug info at -O3 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: qrzhang at gatech dot edu Target Milestone: --- It's a latent issue which affects 4.8-6, and 8-trunk. Gcc-7 works fine. It happens at -O3 only. Bisect between gcc-7 and gcc-8 points to r255267. $ gcc-trunk -v gcc version 9.0.1 20190412 (experimental) [trunk revision 270309] (GCC) $ gdb -v GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1 ## wrong result ## $ gcc-trunk abc.c outer.c -g -O3 $ gdb -x cmds -batch a.out Breakpoint 1 at 0x400394: file abc.c, line 12. Breakpoint 1, main () at abc.c:12 12 optimize_me_not(); $1 = 0 ## correct result ## $ gcc-trunk abc.c outer.c -g $ gdb -x cmds -batch a.out Breakpoint 1 at 0x40049f: file abc.c, line 12. Breakpoint 1, main () at abc.c:12 12 optimize_me_not(); $1 = 7 $ cat abc.c char a; short b[7][1]; int main() { int i, c; a = 0; i = 0; for (; i < 7; i++) { c = 0; for (; c < 1; c++) b[i][c] = 0; } optimize_me_not(); } $ cat outer.c void optimize_me_not() {} $ cat cmds b 12 r p i kill q