From: wilson Date: Thu, 21 Apr 2005 00:06:34 +0000 (+0000) Subject: Avoid emitting bogus debug info that confuses gdb. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6e395578250dfc5851c1d0e5b38570af82ef563d;p=thirdparty%2Fgcc.git Avoid emitting bogus debug info that confuses gdb. PR c++/20805 * dwarf2out.c (gen_variable_die): Don't emit a specification if this is another declaration. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98473 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index b750ff8b466e..c32c545477f4 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -11615,8 +11615,13 @@ gen_variable_die (tree decl, dw_die_ref context_die) copy decls and set the DECL_ABSTRACT flag on them instead of sharing them. - ??? Duplicated blocks have been rewritten to use .debug_ranges. */ - else if (old_die && TREE_STATIC (decl) + ??? Duplicated blocks have been rewritten to use .debug_ranges. + + ??? The declare_in_namespace support causes us to get two DIEs for one + variable, both of which are declarations. We want to avoid considering + one to be a specification, so we must test that this DIE is not a + declaration. */ + else if (old_die && TREE_STATIC (decl) && ! declaration && get_AT_flag (old_die, DW_AT_declaration) == 1) { /* This is a definition of a C++ class level static. */