diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-07-01 20:15:29 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-07-01 20:15:29 -0400 |
commit | e9e485f4faf25ebb3f6c34f922e74b62932f7fbb (patch) | |
tree | 5ca40d35c6ae83de47bf385081fad8ce92d1bb6e | |
parent | a8259c76b8d7dce7cc67c0e768431cd58348945c (diff) | |
download | gcc-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.c | 13 |
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; } |