https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92387

            Bug ID: 92387
           Summary: gcc generates wrong debug information at -O1
           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 seems to be a recent regression. gcc-9 works fine.

The expected value of i should be 0 or opt-out. However, with "-O1", gdb
outputs "i=1".


$ gcc-trunk -v
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.0.0 20191105 (experimental) [trunk revision 277821] (GCC)


#expected output
$ gcc-trunk -g abc.c
$ gdb -x cmds -batch a.out
Breakpoint 1 at 0x400540: file abc.c, line 12.

Breakpoint 1, main () at abc.c:12
12          if (d) printf("index = %d\n", i); // stop here.
$1 = 0


#wrong output at -O1
$ gcc-trunk -O1 -g abc.c
$ gdb -x cmds -batch a.out
Breakpoint 1 at 0x4004a1: file abc.c, line 12.

Breakpoint 1, main () at abc.c:12
12          if (d) printf("index = %d\n", i); // stop here.
$1 = 1


$ cat abc.c
static int a[6];
int b ;
static void c () {
  b =   5 ^   a[b  & 5];
}
int main () {
  int i,  d = 0;
  c ();
  i = 0;
  for (; i < 8; i++)     {
    c ();
    if (d) printf("index = %d\n", i); // stop here.
  }
}



$ cat cmds
b abc.c:12
r
p i
kill
q

Reply via email to