This patch fixed a bug in lipo varpool node linking.
C++ FE drops the initializer if it's not used in this TU. For current
varpool linking may
resolve the varpool node to the one with null initializer.
-Rong
Index: l-ipo.c
===================================================================
--- l-ipo.c (revision 201800)
+++ l-ipo.c (working copy)
@@ -2151,6 +2151,19 @@ resolve_varpool_node (struct varpool_node **slot,
return;
}
+ if (DECL_INITIAL (decl1) && !DECL_INITIAL (decl2))
+ {
+ merge_addressable_attr (decl1, decl2);
+ return;
+ }
+
+ if (!DECL_INITIAL (decl1) && DECL_INITIAL (decl2))
+ {
+ *slot = node;
+ merge_addressable_attr (decl2, decl1);
+ return;
+ }
+
/* Either all complete or neither's type is complete. Just
pick the primary module's decl. */
if (!varpool_is_auxiliary (*slot))