re PR debug/41170 (namespace DIE not generated when it contains only a typedef)

Fix for PR debug/41170

gcc/ChangeLog:
	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.

gcc/testsuite/ChangeLog:
	PR debug/41770
	* debug/dwarf2/namespace-1.C: New test.

From-SVN: r151138
This commit is contained in:
Dodji Seketeli 2009-08-27 07:05:24 +00:00 committed by Dodji Seketeli
parent 3d1be5be4c
commit 7842a9dbf8
4 changed files with 44 additions and 1 deletions

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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;
}