diff options
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 12 |
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); } |