OSDN Git Service

(integrate_decl_tree): Set DECL_ABTRACT_ORIGIN before pushdecl call
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 2 Jul 1995 00:15:29 +0000 (00:15 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 2 Jul 1995 00:15:29 +0000 (00:15 +0000)
for local variables.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10102 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/integrate.c

index 525977a..dfc33f9 100644 (file)
@@ -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;
     }