aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>2005-04-20 17:06:34 -0700
committerJim Wilson <wilson@gcc.gnu.org>2005-04-20 17:06:34 -0700
commit4424eb914843237918e03cab5ba71225e470954c (patch)
treec24b827b097f8525a893e678dcf6a8f39be24cca /gcc
parent78ecf64c1bfd2104ce836b7ce029f3aebd66ead8 (diff)
downloadgcc-4424eb914843237918e03cab5ba71225e470954c.zip
gcc-4424eb914843237918e03cab5ba71225e470954c.tar.gz
gcc-4424eb914843237918e03cab5ba71225e470954c.tar.bz2
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. From-SVN: r98473
Diffstat (limited to 'gcc')
-rw-r--r--gcc/dwarf2out.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index b750ff8..c32c545 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. */