thomasanderson created this revision.
thomasanderson added a reviewer: pcc.

https://reviews.llvm.org/D49745

Files:
  lib/CodeGen/ItaniumCXXABI.cpp
  test/CodeGenCXX/rtti-fundamental.cpp
  test/CodeGenCXX/windows-itanium-type-info.cpp

Index: test/CodeGenCXX/windows-itanium-type-info.cpp
===================================================================
--- test/CodeGenCXX/windows-itanium-type-info.cpp
+++ test/CodeGenCXX/windows-itanium-type-info.cpp
@@ -24,8 +24,8 @@
   throw base();
 }
 
-// CHECK-DAG: @_ZTIi = dso_local dllexport constant
-// CHECK-DAG: @_ZTSi = dso_local dllexport constant
+// CHECK-DAG: @_ZTIi = extern_weak dso_local dllexport constant
+// CHECK-DAG: @_ZTSi = extern_weak dso_local dllexport constant
 
 // CHECK-DAG: @_ZTI7derived = dso_local dllexport constant
 // CHECK-DAG: @_ZTS7derived = dso_local dllexport constant
Index: test/CodeGenCXX/rtti-fundamental.cpp
===================================================================
--- test/CodeGenCXX/rtti-fundamental.cpp
+++ test/CodeGenCXX/rtti-fundamental.cpp
@@ -16,185 +16,185 @@
 }
 
 // void
-// CHECK: @_ZTIv = constant
-// CHECK-HIDDEN: @_ZTIv = hidden constant
-// CHECK: @_ZTIPv = constant
-// CHECK-HIDDEN: @_ZTIPv = hidden constant
-// CHECK: @_ZTIPKv = constant
-// CHECK-HIDDEN: @_ZTIPKv = hidden constant
+// CHECK: @_ZTIv = extern_weak constant
+// CHECK-HIDDEN: @_ZTIv = extern_weak hidden constant
+// CHECK: @_ZTIPv = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPv = extern_weak hidden constant
+// CHECK: @_ZTIPKv = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKv = extern_weak hidden constant
 
 // std::nullptr_t
-// CHECK: @_ZTIDn = constant
-// CHECK-HIDDEN: @_ZTIDn = hidden constant
-// CHECK: @_ZTIPDn = constant
-// CHECK-HIDDEN: @_ZTIPDn = hidden constant
-// CHECK: @_ZTIPKDn = constant
-// CHECK-HIDDEN: @_ZTIPKDn = hidden constant
+// CHECK: @_ZTIDn = extern_weak constant
+// CHECK-HIDDEN: @_ZTIDn = extern_weak hidden constant
+// CHECK: @_ZTIPDn = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPDn = extern_weak hidden constant
+// CHECK: @_ZTIPKDn = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKDn = extern_weak hidden constant
 
 // bool
-// CHECK: @_ZTIb = constant
-// CHECK-HIDDEN: @_ZTIb = hidden constant
-// CHECK: @_ZTIPb = constant
-// CHECK-HIDDEN: @_ZTIPb = hidden constant
-// CHECK: @_ZTIPKb = constant
-// CHECK-HIDDEN: @_ZTIPKb = hidden constant
+// CHECK: @_ZTIb = extern_weak constant
+// CHECK-HIDDEN: @_ZTIb = extern_weak hidden constant
+// CHECK: @_ZTIPb = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPb = extern_weak hidden constant
+// CHECK: @_ZTIPKb = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKb = extern_weak hidden constant
 
 // wchar_t
-// CHECK: @_ZTIw = constant
-// CHECK-HIDDEN: @_ZTIw = hidden constant
-// CHECK: @_ZTIPw = constant
-// CHECK-HIDDEN: @_ZTIPw = hidden constant
-// CHECK: @_ZTIPKw = constant
-// CHECK-HIDDEN: @_ZTIPKw = hidden constant
+// CHECK: @_ZTIw = extern_weak constant
+// CHECK-HIDDEN: @_ZTIw = extern_weak hidden constant
+// CHECK: @_ZTIPw = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPw = extern_weak hidden constant
+// CHECK: @_ZTIPKw = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKw = extern_weak hidden constant
 
 // char
-// CHECK: @_ZTIc = constant
-// CHECK-HIDDEN: @_ZTIc = hidden constant
-// CHECK: @_ZTIPc = constant
-// CHECK-HIDDEN: @_ZTIPc = hidden constant
-// CHECK: @_ZTIPKc = constant
-// CHECK-HIDDEN: @_ZTIPKc = hidden constant
+// CHECK: @_ZTIc = extern_weak constant
+// CHECK-HIDDEN: @_ZTIc = extern_weak hidden constant
+// CHECK: @_ZTIPc = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPc = extern_weak hidden constant
+// CHECK: @_ZTIPKc = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKc = extern_weak hidden constant
 
 // unsigned char
-// CHECK: @_ZTIh = constant
-// CHECK-HIDDEN: @_ZTIh = hidden constant
-// CHECK: @_ZTIPh = constant
-// CHECK-HIDDEN: @_ZTIPh = hidden constant
-// CHECK: @_ZTIPKh = constant
-// CHECK-HIDDEN: @_ZTIPKh = hidden constant
+// CHECK: @_ZTIh = extern_weak constant
+// CHECK-HIDDEN: @_ZTIh = extern_weak hidden constant
+// CHECK: @_ZTIPh = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPh = extern_weak hidden constant
+// CHECK: @_ZTIPKh = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKh = extern_weak hidden constant
 
 // signed char
-// CHECK: @_ZTIa = constant
-// CHECK-HIDDEN: @_ZTIa = hidden constant
-// CHECK: @_ZTIPa = constant
-// CHECK-HIDDEN: @_ZTIPa = hidden constant
-// CHECK: @_ZTIPKa = constant
-// CHECK-HIDDEN: @_ZTIPKa = hidden constant
+// CHECK: @_ZTIa = extern_weak constant
+// CHECK-HIDDEN: @_ZTIa = extern_weak hidden constant
+// CHECK: @_ZTIPa = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPa = extern_weak hidden constant
+// CHECK: @_ZTIPKa = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKa = extern_weak hidden constant
 
 // short
-// CHECK: @_ZTIs = constant
-// CHECK-HIDDEN: @_ZTIs = hidden constant
-// CHECK: @_ZTIPs = constant
-// CHECK-HIDDEN: @_ZTIPs = hidden constant
-// CHECK: @_ZTIPKs = constant
-// CHECK-HIDDEN: @_ZTIPKs = hidden constant
+// CHECK: @_ZTIs = extern_weak constant
+// CHECK-HIDDEN: @_ZTIs = extern_weak hidden constant
+// CHECK: @_ZTIPs = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPs = extern_weak hidden constant
+// CHECK: @_ZTIPKs = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKs = extern_weak hidden constant
 
 // unsigned short
-// CHECK: @_ZTIt = constant
-// CHECK-HIDDEN: @_ZTIt = hidden constant
-// CHECK: @_ZTIPt = constant
-// CHECK-HIDDEN: @_ZTIPt = hidden constant
-// CHECK: @_ZTIPKt = constant
-// CHECK-HIDDEN: @_ZTIPKt = hidden constant
+// CHECK: @_ZTIt = extern_weak constant
+// CHECK-HIDDEN: @_ZTIt = extern_weak hidden constant
+// CHECK: @_ZTIPt = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPt = extern_weak hidden constant
+// CHECK: @_ZTIPKt = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKt = extern_weak hidden constant
 
 // int
-// CHECK: @_ZTIi = constant
-// CHECK-HIDDEN: @_ZTIi = hidden constant
-// CHECK: @_ZTIPi = constant
-// CHECK-HIDDEN: @_ZTIPi = hidden constant
-// CHECK: @_ZTIPKi = constant
-// CHECK-HIDDEN: @_ZTIPKi = hidden constant
+// CHECK: @_ZTIi = extern_weak constant
+// CHECK-HIDDEN: @_ZTIi = extern_weak hidden constant
+// CHECK: @_ZTIPi = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPi = extern_weak hidden constant
+// CHECK: @_ZTIPKi = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKi = extern_weak hidden constant
 
 // unsigned int
-// CHECK: @_ZTIj = constant
-// CHECK-HIDDEN: @_ZTIj = hidden constant
-// CHECK: @_ZTIPj = constant
-// CHECK-HIDDEN: @_ZTIPj = hidden constant
-// CHECK: @_ZTIPKj = constant
-// CHECK-HIDDEN: @_ZTIPKj = hidden constant
+// CHECK: @_ZTIj = extern_weak constant
+// CHECK-HIDDEN: @_ZTIj = extern_weak hidden constant
+// CHECK: @_ZTIPj = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPj = extern_weak hidden constant
+// CHECK: @_ZTIPKj = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKj = extern_weak hidden constant
 
 // long
-// CHECK: @_ZTIl = constant
-// CHECK-HIDDEN: @_ZTIl = hidden constant
-// CHECK: @_ZTIPl = constant
-// CHECK-HIDDEN: @_ZTIPl = hidden constant
-// CHECK: @_ZTIPKl = constant
-// CHECK-HIDDEN: @_ZTIPKl = hidden constant
+// CHECK: @_ZTIl = extern_weak constant
+// CHECK-HIDDEN: @_ZTIl = extern_weak hidden constant
+// CHECK: @_ZTIPl = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPl = extern_weak hidden constant
+// CHECK: @_ZTIPKl = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKl = extern_weak hidden constant
 
 // unsigned long
-// CHECK: @_ZTIm = constant
-// CHECK-HIDDEN: @_ZTIm = hidden constant
-// CHECK: @_ZTIPm = constant
-// CHECK-HIDDEN: @_ZTIPm = hidden constant
-// CHECK: @_ZTIPKm = constant
-// CHECK-HIDDEN: @_ZTIPKm = hidden constant
+// CHECK: @_ZTIm = extern_weak constant
+// CHECK-HIDDEN: @_ZTIm = extern_weak hidden constant
+// CHECK: @_ZTIPm = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPm = extern_weak hidden constant
+// CHECK: @_ZTIPKm = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKm = extern_weak hidden constant
 
 // long long
-// CHECK: @_ZTIx = constant
-// CHECK-HIDDEN: @_ZTIx = hidden constant
-// CHECK: @_ZTIPx = constant
-// CHECK-HIDDEN: @_ZTIPx = hidden constant
-// CHECK: @_ZTIPKx = constant
-// CHECK-HIDDEN: @_ZTIPKx = hidden constant
+// CHECK: @_ZTIx = extern_weak constant
+// CHECK-HIDDEN: @_ZTIx = extern_weak hidden constant
+// CHECK: @_ZTIPx = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPx = extern_weak hidden constant
+// CHECK: @_ZTIPKx = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKx = extern_weak hidden constant
 
 // unsigned long long
-// CHECK: @_ZTIy = constant
-// CHECK-HIDDEN: @_ZTIy = hidden constant
-// CHECK: @_ZTIPy = constant
-// CHECK-HIDDEN: @_ZTIPy = hidden constant
-// CHECK: @_ZTIPKy = constant
-// CHECK-HIDDEN: @_ZTIPKy = hidden constant
+// CHECK: @_ZTIy = extern_weak constant
+// CHECK-HIDDEN: @_ZTIy = extern_weak hidden constant
+// CHECK: @_ZTIPy = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPy = extern_weak hidden constant
+// CHECK: @_ZTIPKy = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKy = extern_weak hidden constant
 
 // __int128
-// CHECK: @_ZTIn = constant
-// CHECK-HIDDEN: @_ZTIn = hidden constant
-// CHECK: @_ZTIPn = constant
-// CHECK-HIDDEN: @_ZTIPn = hidden constant
-// CHECK: @_ZTIPKn = constant
-// CHECK-HIDDEN: @_ZTIPKn = hidden constant
+// CHECK: @_ZTIn = extern_weak constant
+// CHECK-HIDDEN: @_ZTIn = extern_weak hidden constant
+// CHECK: @_ZTIPn = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPn = extern_weak hidden constant
+// CHECK: @_ZTIPKn = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKn = extern_weak hidden constant
 
 // unsigned __int128
-// CHECK: @_ZTIo = constant
-// CHECK-HIDDEN: @_ZTIo = hidden constant
-// CHECK: @_ZTIPo = constant
-// CHECK-HIDDEN: @_ZTIPo = hidden constant
-// CHECK: @_ZTIPKo = constant
-// CHECK-HIDDEN: @_ZTIPKo = hidden constant
+// CHECK: @_ZTIo = extern_weak constant
+// CHECK-HIDDEN: @_ZTIo = extern_weak hidden constant
+// CHECK: @_ZTIPo = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPo = extern_weak hidden constant
+// CHECK: @_ZTIPKo = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKo = extern_weak hidden constant
 
 // half
-// CHECK: @_ZTIDh = constant
-// CHECK-HIDDEN: @_ZTIDh = hidden constant
-// CHECK: @_ZTIPDh = constant
-// CHECK-HIDDEN: @_ZTIPDh = hidden constant
-// CHECK: @_ZTIPKDh = constant
-// CHECK-HIDDEN: @_ZTIPKDh = hidden constant
+// CHECK: @_ZTIDh = extern_weak constant
+// CHECK-HIDDEN: @_ZTIDh = extern_weak hidden constant
+// CHECK: @_ZTIPDh = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPDh = extern_weak hidden constant
+// CHECK: @_ZTIPKDh = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKDh = extern_weak hidden constant
 
 // float
-// CHECK: @_ZTIf = constant
-// CHECK-HIDDEN: @_ZTIf = hidden constant
-// CHECK: @_ZTIPf = constant
-// CHECK-HIDDEN: @_ZTIPf = hidden constant
-// CHECK: @_ZTIPKf = constant
-// CHECK-HIDDEN: @_ZTIPKf = hidden constant
+// CHECK: @_ZTIf = extern_weak constant
+// CHECK-HIDDEN: @_ZTIf = extern_weak hidden constant
+// CHECK: @_ZTIPf = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPf = extern_weak hidden constant
+// CHECK: @_ZTIPKf = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKf = extern_weak hidden constant
 
 // double
-// CHECK: @_ZTId = constant
-// CHECK-HIDDEN: @_ZTId = hidden constant
-// CHECK: @_ZTIPd = constant
-// CHECK-HIDDEN: @_ZTIPd = hidden constant
-// CHECK: @_ZTIPKd = constant
-// CHECK-HIDDEN: @_ZTIPKd = hidden constant
+// CHECK: @_ZTId = extern_weak constant
+// CHECK-HIDDEN: @_ZTId = extern_weak hidden constant
+// CHECK: @_ZTIPd = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPd = extern_weak hidden constant
+// CHECK: @_ZTIPKd = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKd = extern_weak hidden constant
 
 // long double
-// CHECK: @_ZTIe = constant
-// CHECK-HIDDEN: @_ZTIe = hidden constant
-// CHECK: @_ZTIPe = constant
-// CHECK-HIDDEN: @_ZTIPe = hidden constant
-// CHECK: @_ZTIPKe = constant
-// CHECK-HIDDEN: @_ZTIPKe = hidden constant
+// CHECK: @_ZTIe = extern_weak constant
+// CHECK-HIDDEN: @_ZTIe = extern_weak hidden constant
+// CHECK: @_ZTIPe = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPe = extern_weak hidden constant
+// CHECK: @_ZTIPKe = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKe = extern_weak hidden constant
 
 // char16_t
-// CHECK: @_ZTIDs = constant
-// CHECK-HIDDEN: @_ZTIDs = hidden constant
-// CHECK: @_ZTIPDs = constant
-// CHECK-HIDDEN: @_ZTIPDs = hidden constant
-// CHECK: @_ZTIPKDs = constant
-// CHECK-HIDDEN: @_ZTIPKDs = hidden constant
+// CHECK: @_ZTIDs = extern_weak constant
+// CHECK-HIDDEN: @_ZTIDs = extern_weak hidden constant
+// CHECK: @_ZTIPDs = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPDs = extern_weak hidden constant
+// CHECK: @_ZTIPKDs = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKDs = extern_weak hidden constant
 
 // char32_t
-// CHECK: @_ZTIDi = constant
-// CHECK-HIDDEN: @_ZTIDi = hidden constant
-// CHECK: @_ZTIPDi = constant
-// CHECK-HIDDEN: @_ZTIPDi = hidden constant
-// CHECK: @_ZTIPKDi = constant
-// CHECK-HIDDEN: @_ZTIPKDi = hidden constant
+// CHECK: @_ZTIDi = extern_weak constant
+// CHECK-HIDDEN: @_ZTIDi = extern_weak hidden constant
+// CHECK: @_ZTIPDi = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPDi = extern_weak hidden constant
+// CHECK: @_ZTIPKDi = extern_weak constant
+// CHECK-HIDDEN: @_ZTIPKDi = extern_weak hidden constant
Index: lib/CodeGen/ItaniumCXXABI.cpp
===================================================================
--- lib/CodeGen/ItaniumCXXABI.cpp
+++ lib/CodeGen/ItaniumCXXABI.cpp
@@ -3689,7 +3689,7 @@
         FundamentalType.withConst());
     for (QualType Type : {FundamentalType, PointerType, PointerTypeConst})
       ItaniumRTTIBuilder(*this).BuildTypeInfo(
-          Type, llvm::GlobalValue::ExternalLinkage,
+          Type, llvm::GlobalValue::ExternalWeakLinkage,
           Visibility, DLLStorageClass);
   }
 }
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D49745: Genera... Tom Anderson via Phabricator via cfe-commits

Reply via email to