From ecdeb77c8b75a2e5627fb260719281ba1d3bd782 Mon Sep 17 00:00:00 2001 From: kenner Date: Mon, 19 Jun 1995 23:27:01 +0000 Subject: (integrate_decl_tree): Only set DECL_ABSTRACT_ORIGIN if the decl returned by pushdecl is the one we started with. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10018 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/integrate.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'gcc/integrate.c') diff --git a/gcc/integrate.c b/gcc/integrate.c index 64248047371..525977aceca 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -1968,6 +1968,7 @@ integrate_decl_tree (let, level, map) for (t = BLOCK_VARS (let); t; t = TREE_CHAIN (t)) { tree d; + tree newd; push_obstacks_nochange (); saveable_allocation (); @@ -1986,13 +1987,19 @@ integrate_decl_tree (let, level, map) } /* These args would always appear unused, if not for this. */ TREE_USED (d) = 1; - /* Prevent warning for shadowing with these. */ - DECL_ABSTRACT_ORIGIN (d) = t; if (DECL_LANG_SPECIFIC (d)) copy_lang_decl (d); - pushdecl (d); + newd = pushdecl (d); + + /* If the decl we get back is the copy of 't' that we started with, + then set the DECL_ABSTRACT_ORIGIN. Otherwise, we must have a + duplicate decl, and we got the older one back. In that case, setting + DECL_ABSTRACT_ORIGIN is not appropriate. */ + if (newd == d) + /* Prevent warning for shadowing with these. */ + DECL_ABSTRACT_ORIGIN (d) = t; } for (t = BLOCK_SUBBLOCKS (let); t; t = TREE_CHAIN (t)) -- cgit v1.2.1