[Bug debug/90946] New: gcc generates wrong debug information at -O3
qrzhang at gatech dot edu
gcc-bugzilla@gcc.gnu.org
Thu Jun 20 04:21:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90946
Bug ID: 90946
Summary: gcc generates wrong debug information 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 affects the trunk at "-O3". The expected output is "105487". However, at
-O3, it prints "40369".
Bisect points to r270902.
$ gcc-trunk -v
gcc version 10.0.0 20190619 (experimental) [trunk revision 272472] (GCC)
$ gdb -v
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
#Correct output#
$ gcc-trunk -g abc.c outer.c
$ gdb -x cmds -batch a.out
Breakpoint 1 at 0x40052d: file abc.c, line 30.
Breakpoint 1, g (j=1) at abc.c:30
30 optimize_me_not();
$1 = 105487
#Wrong output#
$ gcc-trunk -g abc.c outer.c -O3
$ gdb -x cmds -batch a.out
Breakpoint 1 at 0x400396: file abc.c, line 30.
Breakpoint 1, g (j=1) at abc.c:30
30 optimize_me_not();
$1 = 40369
$ cat abc.c
static short a = 8;
int b, f, h;
int *c;
volatile int d;
int e(j) {}
static char g(j) {
unsigned short k;
int l_756 = 40369, i = 0;
int *l = &l_756;
for (; i < 4; i++)
f = 4071609;
if (f) {
int m[1];
if (j)
;
else {
int **n = &c;
*n = e(&l_756);
**n = h;
**n |= 0;
}
} else {
k = b;
*c = k;
h &= 8;
}
d;
if (a) {
*l = 105487;
optimize_me_not();
return 8;
}
int o = &l;
}
int main() { g(1); }
$ cat outer.c
void optimize_me_not() {}
$ cat cmds
b 30
r
p l_756
kill
q
More information about the Gcc-bugs
mailing list