re PR debug/40109 (Incorrect debug info nesting for typedef statements within namespaces)
Fix for PR debug/40109 gcc/ChangeLog: PR debug/40109 * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a child of the containing namespace's DIE. gcc/testsuite/ChangeLog: PR debug/40109 * g++.dg/debug/dwarf2/nested-1.C: New test. From-SVN: r147674
This commit is contained in:
parent
f6a1e4301a
commit
82725547db
@ -1,3 +1,9 @@
|
||||
2009-05-18 Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
PR debug/40109
|
||||
* dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
|
||||
child of the containing namespace's DIE.
|
||||
|
||||
2009-05-18 Adam Nemet <anemet@caviumnetworks.com>
|
||||
|
||||
* config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
|
||||
|
@ -14642,6 +14642,12 @@ gen_type_die_with_usage (tree type, dw_die_ref context_die,
|
||||
/* Prevent broken recursion; we can't hand off to the same type. */
|
||||
gcc_assert (DECL_ORIGINAL_TYPE (TYPE_NAME (type)) != type);
|
||||
|
||||
/* Use the DIE of the containing namespace as the parent DIE of
|
||||
the type description DIE we want to generate. */
|
||||
if (DECL_CONTEXT (TYPE_NAME (type))
|
||||
&& TREE_CODE (DECL_CONTEXT (TYPE_NAME (type))) == NAMESPACE_DECL)
|
||||
context_die = lookup_decl_die (DECL_CONTEXT (TYPE_NAME (type)));
|
||||
|
||||
TREE_ASM_WRITTEN (type) = 1;
|
||||
gen_decl_die (TYPE_NAME (type), NULL, context_die);
|
||||
return;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-05-18 Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
PR debug/40109
|
||||
* g++.dg/debug/dwarf2/nested-1.C: New test.
|
||||
|
||||
2009-05-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR testsuite/39907
|
||||
|
29
gcc/testsuite/g++.dg/debug/dwarf2/nested-1.C
Normal file
29
gcc/testsuite/g++.dg/debug/dwarf2/nested-1.C
Normal file
@ -0,0 +1,29 @@
|
||||
// Contributed by Dodji Seketeli <dodji@redhat.com>
|
||||
// Origin PR debug/40109
|
||||
// { dg-do compile }
|
||||
// { dg-options "-g -dA -O0" }
|
||||
|
||||
namespace A
|
||||
{
|
||||
|
||||
class B
|
||||
{
|
||||
};
|
||||
typedef A::B AB;
|
||||
};
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
A::AB ab;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// { dg-final { scan-assembler "DW_TAG_typedef" } }
|
||||
//
|
||||
// What we want to do here is to be sure that the DIE of A::AB is generated
|
||||
// as a child of the DIE of the namespace A declaration.
|
||||
// So this test won't catch a regression on this fix yet. To write a proper
|
||||
// test for this fix, we would need a dwarf reader written in tcl,
|
||||
// or something along those lines.
|
||||
|
Loading…
Reference in New Issue
Block a user