From d7f1df66b24583dde50993c2aed5e4d517c44026 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Fri, 13 Nov 2009 12:59:26 -0500 Subject: re PR c++/26965 (Unnecessary debug info for unused consts in C++) PR debug/26965 * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT. Don't emit a second declaration at any scope. From-SVN: r154157 --- gcc/dwarf2out.c | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) (limited to 'gcc/dwarf2out.c') diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index e3a6412..2ebe0ae 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -17926,26 +17926,6 @@ gen_variable_die (tree decl, tree origin, dw_die_ref context_die) dw_die_ref old_die = decl ? lookup_decl_die (decl) : NULL; dw_die_ref origin_die; int declaration = (DECL_EXTERNAL (decl_or_origin) - /* If DECL is COMDAT and has not actually been - emitted, we cannot take its address; there - might end up being no definition anywhere in - the program. For example, consider the C++ - test case: - - template - struct S { static const int i = 7; }; - - template - const int S::i; - - int f() { return S::i; } - - Here, S::i is not DECL_EXTERNAL, but no - definition is required, so the compiler will - not emit a definition. */ - || (TREE_CODE (decl_or_origin) == VAR_DECL - && DECL_COMDAT (decl_or_origin) - && !TREE_ASM_WRITTEN (decl_or_origin)) || class_or_namespace_scope_p (context_die)); if (!origin) @@ -18059,8 +18039,7 @@ gen_variable_die (tree decl, tree origin, dw_die_ref context_die) and if we already emitted a DIE for it, don't emit a second DIE for it again. */ if (old_die - && declaration - && old_die->die_parent == context_die) + && declaration) return; /* For static data members, the declaration in the class is supposed -- cgit v1.1