aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/decl2.c12
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0981c7e..995f49e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
+ * decl2.c (get_guard): Set linkage from guarded decl.
+
+2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
+
* call.c (convert_default_arg): Check for unprocessed
DEFAULT_ARG.
* cp-tree.h (replace_defarg): Move to spew.c.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index e099056..3f15b38 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -2856,11 +2856,17 @@ get_guard (decl)
guard_type = integer_type_node;
guard = build_decl (VAR_DECL, sname, guard_type);
- TREE_PUBLIC (guard) = 1;
+
+ /* The guard should have the same linkage as what it guards. */
+ TREE_PUBLIC (guard) = TREE_PUBLIC (decl);
+ TREE_STATIC (guard) = TREE_STATIC (decl);
+ DECL_COMMON (guard) = DECL_COMMON (decl);
+ DECL_ONE_ONLY (guard) = DECL_ONE_ONLY (decl);
+ if (TREE_PUBLIC (decl))
+ DECL_WEAK (guard) = DECL_WEAK (decl);
+
DECL_ARTIFICIAL (guard) = 1;
- TREE_STATIC (guard) = 1;
TREE_USED (guard) = 1;
- DECL_COMMON (guard) = 1;
pushdecl_top_level (guard);
cp_finish_decl (guard, NULL_TREE, NULL_TREE, 0);
}