aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2002-02-26 19:05:26 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2002-02-26 19:05:26 +0000
commit06e224f7e851bf8bf6bb5adfe52ae99de43197aa (patch)
tree1b047e09d20c790b04c70b61dd892a3fc628d0c2 /gcc/dwarf2out.c
parent40367e2d81cd7c78a253eb9264ea63cc8376ec48 (diff)
downloadgcc-06e224f7e851bf8bf6bb5adfe52ae99de43197aa.zip
gcc-06e224f7e851bf8bf6bb5adfe52ae99de43197aa.tar.gz
gcc-06e224f7e851bf8bf6bb5adfe52ae99de43197aa.tar.bz2
dwarf2out.c (gen_inlined_subroutine_die): If block is abstract, generate a die for the lexical block.
* dwarf2out.c (gen_inlined_subroutine_die): If block is abstract, generate a die for the lexical block. From-SVN: r50056
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 6313aeb..f4c298a 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -10579,6 +10579,20 @@ gen_inlined_subroutine_die (stmt, context_die, depth)
decls_for_scope (stmt, subr_die, depth);
current_function_has_inlines = 1;
}
+ else
+ /* We may get here if we're the outer block of function A that was
+ inlined into function B that was inlined into function C. When
+ generating debugging info for C, dwarf2out_abstract_function(B)
+ would mark all inlined blocks as abstract, including this one.
+ So, we wouldn't (and shouldn't) expect labels to be generated
+ for this one. Instead, just emit debugging info for
+ declarations within the block. This is particularly important
+ in the case of initializers of arguments passed from B to us:
+ if they're statement expressions containing declarations, we
+ wouldn't generate dies for their abstract variables, and then,
+ when generating dies for the real variables, we'd die (pun
+ intended :-) */
+ gen_lexical_block_die (stmt, context_die, depth);
}
/* Generate a DIE for a field in a record, or structure. */