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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-debug
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2020-02-27
            Version|unknown                     |10.0
     Ever confirmed|0                           |1

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
So with GCC 7 we just have line number 5 and always print the value after
the decrement.  With GCC 9 we claim we actually have sth at line 4
(but not earlier).

(gdb) start
Temporary breakpoint 1 at 0x4003a0: file t.c, line 4.
Starting program: /tmp/a.out 

Temporary breakpoint 1, main () at t.c:4
4         ;// b here
(gdb) p i
$1 = 2580636200
(gdb) disassemble
Dump of assembler code for function main:
=> 0x00000000004003a0 <+0>:     xor    %eax,%eax
   0x00000000004003a2 <+2>:     retq   
End of assembler dump.
(gdb) si
0x00000000004003a2      4         ;// b here
(gdb) p i
$2 = 2580636199

so now we have both values but with bogus line numbers for the pre-decrement
point.  .optimized GIMPLE:

main ()
{
  <bb 2> [local count: 1073741824]:
  [t.c:2:3] # DEBUG BEGIN_STMT
  [t.c:2:12] # DEBUG i => 2580636200
  [t.c:3:3] # DEBUG BEGIN_STMT
  [t.c:3:4] # DEBUG i => 2580636199
  [t.c:4:3] # DEBUG BEGIN_STMT
  [<built-in>:0:0] return 0;

which looks sensible.  Not sure if a producer or consumer issue but not
having an instruction at line 3 makes things difficult (and value
2580636200 at line 4 is certainly wrong).

Reply via email to