[Bug gdb/30278] New: gdb gives wrong value at -O1

hluaw at connect dot ust.hk sourceware-bugzilla@sourceware.org
Mon Mar 27 13:34:17 GMT 2023


https://sourceware.org/bugzilla/show_bug.cgi?id=30278

            Bug ID: 30278
           Summary: gdb gives wrong value at -O1
           Product: gdb
           Version: HEAD
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gdb
          Assignee: unassigned at sourceware dot org
          Reporter: hluaw at connect dot ust.hk
  Target Milestone: ---

Environment:
$ gcc --version
gcc (Gentoo 11.3.1_p20221209 p3) 11.3.1 20221209
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gdb --version
GNU gdb (GDB) 14.0.50.20230327-git
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Code:
int c ;
int func_8() {
  int i = 0;
  for (; i < 8; i++)
    ;
  if ((c = 0))
    ;
  return c;
}
int main() { func_8(); }

Command to reproduce:
b func_8
r
p i

gdb Output:
func_8 () at r.c:6
6         if ((c = 0))
(gdb) p i
$1 = 0

Expected result is `i = 8`, which happens right after line 6.
I tend to think gdb should report `i = 8` at line 6 instead of line 8.
In fact, when the for-loop is followed by other statement rather than the if
here, gdb can correctly report `i = 8` on line 6.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Gdb-prs mailing list