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); } } 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: 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