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

Reply via email to