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

            Bug ID: 57519
           Summary: DW_TAG_imported_declaration put in wrong class (base
                    class instead of derived class)
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dje at google dot com

Created attachment 30253
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30253&action=edit
assembler output

[with svn head as of today]

class base
{
 public:
  int foo (int x) { return x; }
};

class derived : base
{
 public:
  using base::foo;
  double foo (double x) { return x; }
};

int
main ()
{
  derived *d = new derived;
  return d->foo (0);
}

bash$ g++ -m64 -c -o using-method.o64 using-method.cc -g -save-temps -dA
-fverbose-asm

I see this in the debug info for base (instead of derived):

        .uleb128 0x6    # (DIE (0x58) DW_TAG_imported_declaration)
        .byte   0x1     # DW_AT_decl_file (using-method.cc)
        .byte   0x8     # DW_AT_decl_line
        .long   0x35    # DW_AT_import

I would have expected this to be in the debug info for derived.

[full output attached]

Reply via email to