aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-07-07 01:47:54 +0000
committerRichard Stallman <rms@gnu.org>1992-07-07 01:47:54 +0000
commite2f6a3cfee9db7a6e8a451ff53d099750b7b64bf (patch)
tree17be87a2d1df06c668b8fea166ec1411591f43e6 /gcc
parent176e81ebf96ff9e6dbd15df9f5d37808711c2a11 (diff)
downloadgcc-e2f6a3cfee9db7a6e8a451ff53d099750b7b64bf.zip
gcc-e2f6a3cfee9db7a6e8a451ff53d099750b7b64bf.tar.gz
gcc-e2f6a3cfee9db7a6e8a451ff53d099750b7b64bf.tar.bz2
(duplicate_decls): Merge DECL_IN_SYSTEM_HEADER between duplicate decls.
From-SVN: r1492
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-decl.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 4f00471..34c4e10 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -1449,7 +1449,11 @@ duplicate_decls (newdecl, olddecl)
if (TREE_READONLY (newdecl))
TREE_READONLY (olddecl) = 1;
if (TREE_THIS_VOLATILE (newdecl))
- TREE_THIS_VOLATILE (olddecl) = 1;
+ {
+ TREE_THIS_VOLATILE (olddecl) = 1;
+ if (TREE_CODE (newdecl) == VAR_DECL)
+ make_var_volatile (newdecl);
+ }
/* Keep source location of definition rather than declaration. */
if (DECL_INITIAL (newdecl) == 0 && DECL_INITIAL (olddecl) != 0)
@@ -1458,14 +1462,18 @@ duplicate_decls (newdecl, olddecl)
DECL_SOURCE_FILE (newdecl) = DECL_SOURCE_FILE (olddecl);
}
+ /* Merge the unused-warning information. */
+ if (DECL_IN_SYSTEM_HEADER (olddecl))
+ DECL_IN_SYSTEM_HEADER (newdecl) = 1;
+ else if (DECL_IN_SYSTEM_HEADER (newdecl))
+ DECL_IN_SYSTEM_HEADER (olddecl) = 1;
+
/* Merge the initialization information. */
if (DECL_INITIAL (newdecl) == 0)
DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl);
+
/* Keep the old rtl since we can safely use it. */
DECL_RTL (newdecl) = DECL_RTL (olddecl);
- if (TREE_CODE (newdecl) == VAR_DECL
- && TREE_THIS_VOLATILE (newdecl))
- make_var_volatile (newdecl);
}
/* If cannot merge, then use the new type and qualifiers,
and don't preserve the old rtl. */