From e40a1c67653733936e2b0ffa7a8b7eb94c5c8833 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Fri, 4 Feb 2000 23:46:13 +0000 Subject: 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/dwarf2out.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'gcc/dwarf2out.c') diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 2ca007a4..fdc6448 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); -- cgit v1.1