[Bug debug/37002] New: [4.4 Regression] No debug info on unreferenced parameters

hjl dot tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Fri Aug 1 16:41:00 GMT 2008


[hjl@gnu-33 gcc]$ cat /tmp/x.c
#include <stdio.h>

void
foo (int x, int y, int z)
{
  printf ("hello\n");
}

int
main ()
{
  foo (3000, 3303, -193);
}
[hjl@gnu-33 gcc]$ ./xgcc -B./ -m32 -mforce-drap -mstackrealign /tmp/x.c -g
[hjl@gnu-33 gcc]$ /usr/bin/gdb a.out 
GNU gdb Fedora (6.8-12.fc9)
...
(gdb) b foo
Breakpoint 1 at 0x80483b5: file /tmp/x.c, line 6.
(gdb) r
Starting program: /export/build/gnu/gcc-work/build-x86_64-linux/gcc/a.out 

Breakpoint 1, foo () at /tmp/x.c:6
6         printf ("hello\n");
Missing separate debuginfos, use: debuginfo-install glibc.i686
(gdb) 

The unreferenced parameters aren't available. The problem is when
DRAP is used to align stack, the parameters are referenced via
internal_arg_pointer, which may be a copy of DRAP. When the RTL
that assigning DRAP to internal_arg_pointer is optimized away
since it is never referenced in the function body, mem_loc_descriptor
finds a pseudo register:

      if (REGNO (rtl) < FIRST_PSEUDO_REGISTER)
        mem_loc_result = based_loc_descr (rtl, 0, VAR_INIT_STATUS_INITIALIZED);

where rtl is internal_arg_pointer and doesn't generate debug info.


-- 
           Summary: [4.4 Regression] No debug info on unreferenced
                    parameters
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hjl dot tools at gmail dot com
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37002



More information about the Gcc-bugs mailing list