aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/module.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/module.cc')
-rw-r--r--gcc/cp/module.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index 81357a8..e0b9efa 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -6733,6 +6733,7 @@ trees_out::core_vals (tree t)
WT (((lang_tree_node *)t)->baselink.binfo);
WT (((lang_tree_node *)t)->baselink.functions);
WT (((lang_tree_node *)t)->baselink.access_binfo);
+ WT (((lang_tree_node *)t)->baselink.common.chain);
break;
case CONSTRAINT_INFO:
@@ -7302,6 +7303,7 @@ trees_in::core_vals (tree t)
RT (((lang_tree_node *)t)->baselink.binfo);
RTU (((lang_tree_node *)t)->baselink.functions);
RT (((lang_tree_node *)t)->baselink.access_binfo);
+ RT (((lang_tree_node *)t)->baselink.common.chain);
break;
case CONSTRAINT_INFO:
@@ -13046,12 +13048,11 @@ trees_in::read_var_def (tree decl, tree maybe_template)
if (DECL_EXPLICIT_INSTANTIATION (decl)
&& !DECL_EXTERNAL (decl))
setup_explicit_instantiation_definition_linkage (decl);
- if (DECL_IMPLICIT_INSTANTIATION (decl)
- || (DECL_EXPLICIT_INSTANTIATION (decl)
- && !DECL_EXTERNAL (decl))
- || (DECL_CLASS_SCOPE_P (decl)
- && !DECL_VTABLE_OR_VTT_P (decl)
- && !DECL_TEMPLATE_INFO (decl)))
+ /* Class static data members are handled in read_class_def. */
+ if (!DECL_CLASS_SCOPE_P (decl)
+ && (DECL_IMPLICIT_INSTANTIATION (decl)
+ || (DECL_EXPLICIT_INSTANTIATION (decl)
+ && !DECL_EXTERNAL (decl))))
note_vague_linkage_variable (decl);
}
if (!dyn_init)
@@ -13465,6 +13466,10 @@ trees_in::read_class_def (tree defn, tree maybe_template)
DECL_ACCESS (d) = tree_cons (type, access, list);
}
}
+
+ if (TREE_CODE (decl) == VAR_DECL
+ && TREE_CODE (maybe_template) != TEMPLATE_DECL)
+ note_vague_linkage_variable (decl);
}
}