diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2002-02-26 19:05:26 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2002-02-26 19:05:26 +0000 |
commit | 06e224f7e851bf8bf6bb5adfe52ae99de43197aa (patch) | |
tree | 1b047e09d20c790b04c70b61dd892a3fc628d0c2 /gcc/dwarf2out.c | |
parent | 40367e2d81cd7c78a253eb9264ea63cc8376ec48 (diff) | |
download | gcc-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.c | 14 |
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. */ |