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

            Bug ID: 90074
           Summary: wrong debug info 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's a latent issue which affects 4.8-6, and 8-trunk. Gcc-7 works fine.
It happens at -O3 only. Bisect between gcc-7 and gcc-8 points to r255267.

$ gcc-trunk -v
gcc version 9.0.1 20190412 (experimental) [trunk revision 270309] (GCC)

$ gdb -v
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1

## wrong result ##
$ gcc-trunk abc.c outer.c -g -O3
$ gdb -x cmds -batch a.out
Breakpoint 1 at 0x400394: file abc.c, line 12.

Breakpoint 1, main () at abc.c:12
12        optimize_me_not();
$1 = 0


## correct result ##
$ gcc-trunk abc.c outer.c -g
$ gdb -x cmds -batch a.out
Breakpoint 1 at 0x40049f: file abc.c, line 12.

Breakpoint 1, main () at abc.c:12
12        optimize_me_not();
$1 = 7


$ cat abc.c
char a;
short b[7][1];
int main() {
  int i, c;
  a = 0;
  i = 0;
  for (; i < 7; i++) {
    c = 0;
    for (; c < 1; c++)
      b[i][c] = 0;
  }
  optimize_me_not();
}

$ cat outer.c
void optimize_me_not() {}

$ cat cmds
b 12
r
p i
kill
q

Reply via email to