From: Richard Kenner Date: Mon, 19 Jun 1995 23:27:01 +0000 (-0400) Subject: (integrate_decl_tree): Only set DECL_ABSTRACT_ORIGIN if the decl X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6bc85e79525c2b226121dbcc8e15824f7d44f055;p=gcc.git (integrate_decl_tree): Only set DECL_ABSTRACT_ORIGIN if the decl returned by pushdecl is the one we started with. From-SVN: r10018 --- 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))