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