https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90336
Bug ID: 90336 Summary: gcc generates wrong debug information at -O1 to -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: --- This is a recent regression. Gcc-8 works fine. Bisect points to r260253. The expected value of "l_90" should be 852. With optimization, it prints "-1". $ gcc-trunk -v Thread model: posix gcc version 10.0.0 20190503 (experimental) [trunk revision 270847] (GCC) $ gdb -v GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1 #Expected output# $ gcc-trunk -g abc.c outer.c $ gdb -x cmds -batch a.out Breakpoint 1 at 0x4004ad: file abc.c, line 11. Breakpoint 1, d (e=852) at abc.c:11 11 optimize_me_not(); $1 = 852 #Wrong output at -O3# $ gcc-trunk -g abc.c outer.c -O3 $ gdb -x cmds -batch a.out Breakpoint 1 at 0x400497: file abc.c, line 11. Breakpoint 1, d (e=e@entry=852) at abc.c:11 11 optimize_me_not(); $1 = -1 $ cat abc.c int a; long b; short c; int d(e) { int l_90 = -1L; a &&b != (c = 0); int *f, *g = &l_90, *i = &l_90; *g = e; int **h = &f; *h = i; optimize_me_not(); if (b) return a; } int main() { d(852); } $ cat outer.c void optimize_me_not() {} $ cat cmds b 11 r p l_90 kill q