diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/namespace-1.C | 30 |
4 files changed, 44 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11dc539..95800ce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-08-27 Dodji Seketeli <dodji@redhat.com> + + PR debug/41770 + * dwarf2out.c (get_context_die): Declare this static function. + (gen_type_die_with_usage): Make sure a DIE is a generated for + the context of a typedef. + 2009-08-26 Anatoly Sokolov <aesok@post.ru> * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 2ee1df8..ad956f8 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -5887,6 +5887,7 @@ static void gen_type_die (tree, dw_die_ref); static void gen_block_die (tree, dw_die_ref, int); static void decls_for_scope (tree, dw_die_ref, int); static int is_redundant_typedef (const_tree); +static inline dw_die_ref get_context_die (tree); static void gen_namespace_die (tree, dw_die_ref); static void gen_decl_die (tree, tree, dw_die_ref); static dw_die_ref force_decl_die (tree); @@ -15436,7 +15437,7 @@ gen_type_die_with_usage (tree type, dw_die_ref context_die, 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))); + context_die = get_context_die (DECL_CONTEXT (TYPE_NAME (type))); TREE_ASM_WRITTEN (type) = 1; gen_decl_die (TYPE_NAME (type), NULL, context_die); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e4a60c9..8448541 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-08-27 Dodji Seketeli <dodji@redhat.com> + + PR debug/41770 + * debug/dwarf2/namespace-1.C: New test. + 2009-08-26 H.J. Lu <hongjiu.lu@intel.com> PR fortran/41162 diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/namespace-1.C b/gcc/testsuite/g++.dg/debug/dwarf2/namespace-1.C new file mode 100644 index 0000000..aad89ba5 --- /dev/null +++ b/gcc/testsuite/g++.dg/debug/dwarf2/namespace-1.C @@ -0,0 +1,30 @@ +// Contributed by Dodji Seketeli <dodji@redhat.com> +// Origin PR debug/41170 +// { dg-options "-g -dA" } +// +// We want to test that there is a DW_TAG_namespace DIE DW_AT_name is set +// to "not_emitted". That namespace die has a child DW_TAG_typedef DIE +// which DW_AT_name is the null terminated string "T". +// { dg-final { scan-assembler-times "DIE +\\(.*?\\) DW_TAG_namespace" 1 } } +// { dg-final { scan-assembler-times "DW_AT_name: \"not_emitted\"" 1 } } +// { dg-final { scan-assembler-times "DIE +\\(.*?\\) DW_TAG_typedef" 1 } } +// { dg-final { scan-assembler-times "\.ascii \"T.0\"\[\t \]+# DW_AT_name" 1 } } + +struct strukt +{ + int m; +}; + +namespace not_emitted +{ + typedef strukt T; +} + +int +main() +{ + not_emitted::T t; + t.m = 0; + return 0; +} + |