From: wilson Date: Tue, 22 Apr 1997 22:19:47 +0000 (+0000) Subject: (gen_variable_dir): Add test for DW_AT_declaration to X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;ds=sidebyside;h=5e1bdb0ee08764b4b49bdaa2cadd90756680d313;p=pf3gnuchains%2Fgcc-fork.git (gen_variable_dir): Add test for DW_AT_declaration to the old_die if statement, and delete assertion for it. (decl_ultimate_origin): Remove last change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13956 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 1341ed712dd..c30785f1100 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -1998,7 +1998,7 @@ decl_ultimate_origin (decl) { register tree immediate_origin = DECL_ABSTRACT_ORIGIN (decl); - if (immediate_origin == NULL_TREE || immediate_origin == decl) + if (immediate_origin == NULL_TREE) return NULL_TREE; else { @@ -7453,9 +7453,15 @@ gen_variable_die (decl, context_die) if (origin != NULL) add_abstract_origin_attribute (var_die, origin); - else if (old_die && TREE_STATIC (decl)) - { - assert (get_AT_flag (old_die, DW_AT_declaration) == 1); + /* Loop unrolling can create multiple blocks that refer to the same + static variable, so we must test for the DW_AT_declaration flag. */ + /* ??? Loop unrolling/reorder_blocks should perhaps be rewritten to + copy decls and set the DECL_ABSTRACT flag on them instead of + sharing them. */ + else if (old_die && TREE_STATIC (decl) + && get_AT_flag (old_die, DW_AT_declaration) == 1) + { + /* ??? This is an instantiation of a C++ class level static. */ add_AT_die_ref (var_die, DW_AT_specification, old_die); if (DECL_NAME (decl)) {