aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-07-01 20:15:29 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-07-01 20:15:29 -0400
commite9e485f4faf25ebb3f6c34f922e74b62932f7fbb (patch)
tree5ca40d35c6ae83de47bf385081fad8ce92d1bb6e
parenta8259c76b8d7dce7cc67c0e768431cd58348945c (diff)
downloadgcc-e9e485f4faf25ebb3f6c34f922e74b62932f7fbb.zip
gcc-e9e485f4faf25ebb3f6c34f922e74b62932f7fbb.tar.gz
gcc-e9e485f4faf25ebb3f6c34f922e74b62932f7fbb.tar.bz2
(integrate_decl_tree): Set DECL_ABTRACT_ORIGIN before pushdecl call
for local variables. From-SVN: r10102
-rw-r--r--gcc/integrate.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 525977a..dfc33f9 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1991,14 +1991,23 @@ integrate_decl_tree (let, level, map)
if (DECL_LANG_SPECIFIC (d))
copy_lang_decl (d);
+ /* Must set DECL_ABSTRACT_ORIGIN here for local variables, to ensure
+ that we don't get -Wshadow warnings. But don't set it here if
+ pushdecl might return a duplicate decl, as that will result in
+ incorrect DWARF debug info. */
+ if (! DECL_EXTERNAL (d) || ! TREE_PUBLIC (d))
+ /* Prevent warning for shadowing with these. */
+ DECL_ABSTRACT_ORIGIN (d) = t;
+
newd = pushdecl (d);
- /* If the decl we get back is the copy of 't' that we started with,
+ /* If we didn't set DECL_ABSTRACT_ORIGIN above, then set it now.
+ Simpler to just set it always rather than checking.
+ 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;
}