From e40a1c67653733936e2b0ffa7a8b7eb94c5c8833 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Fri, 4 Feb 2000 23:46:13 +0000 Subject: [PATCH] dwarf2out.c (add_abstract_origin_attribute): Don't call gen_abstract_function on our context if we're a nested function. * dwarf2out.c (add_abstract_origin_attribute): Don't call gen_abstract_function on our context if we're a nested function. From-SVN: r31798 --- gcc/ChangeLog | 5 +++++ gcc/dwarf2out.c | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 70170c3336b..f13535e63dd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-02-04 Jason Merrill + + * dwarf2out.c (add_abstract_origin_attribute): Don't call + gen_abstract_function on our context if we're a nested function. + 2000-02-05 Michael Hayes * config/c4x/c4x.md (fixuns_truncqfqi2): Rewrite. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 2ca007a4b05..fdc644876b0 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -7374,12 +7374,18 @@ add_abstract_origin_attribute (die, origin) { dw_die_ref origin_die = NULL; - /* We may have gotten separated from the block for the inlined - function, if we're in an exception handler or some such; make - sure that the abstract function has been written out. */ - tree fn = decl_function_context (origin); - if (fn) - gen_abstract_function (fn); + if (die->die_tag != DW_TAG_subprogram) + { + /* We may have gotten separated from the block for the inlined + function, if we're in an exception handler or some such; make + sure that the abstract function has been written out. + + Doing this for nested functions is wrong, however; functions are + distinct units, and our context might not even be inline. */ + tree fn = decl_function_context (origin); + if (fn) + gen_abstract_function (fn); + } if (TREE_CODE_CLASS (TREE_CODE (origin)) == 'd') origin_die = lookup_decl_die (origin);