Revert r312224: "[ItaniumCXXABI] Always use linkonce_odr linkage for RTTI data on MinGW"
Breaks on buildbot: http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/4548/steps/test-check-all/logs/stdio The test in CodeGenCXX/virt-dtor-key.cpp tests using %itanium_abi_triple; on non-windows platforms, this resolves to the current platform triple (where there was no behaviour change), while on windows, it resolves to a mingw triple (where the behaviour was intentionally changed). llvm-svn: 312229
This commit is contained in:
parent
5f9346471c
commit
7bfb697259
|
@ -2998,13 +2998,15 @@ static llvm::GlobalVariable::LinkageTypes getTypeInfoLinkage(CodeGenModule &CGM,
|
|||
if (RD->hasAttr<DLLImportAttr>() &&
|
||||
ShouldUseExternalRTTIDescriptor(CGM, Ty))
|
||||
return llvm::GlobalValue::ExternalLinkage;
|
||||
// MinGW always uses LinkOnceODRLinkage for type info.
|
||||
if (RD->isDynamicClass() &&
|
||||
!CGM.getContext()
|
||||
.getTargetInfo()
|
||||
.getTriple()
|
||||
.isWindowsGNUEnvironment())
|
||||
return CGM.getVTableLinkage(RD);
|
||||
if (RD->isDynamicClass()) {
|
||||
llvm::GlobalValue::LinkageTypes LT = CGM.getVTableLinkage(RD);
|
||||
// MinGW won't export the RTTI information when there is a key function.
|
||||
// Make sure we emit our own copy instead of attempting to dllimport it.
|
||||
if (RD->hasAttr<DLLImportAttr>() &&
|
||||
llvm::GlobalValue::isAvailableExternallyLinkage(LT))
|
||||
LT = llvm::GlobalValue::LinkOnceODRLinkage;
|
||||
return LT;
|
||||
}
|
||||
}
|
||||
|
||||
return llvm::GlobalValue::LinkOnceODRLinkage;
|
||||
|
|
|
@ -2,12 +2,7 @@
|
|||
struct A { int a; };
|
||||
struct B : virtual A { int b; };
|
||||
B b;
|
||||
class C {
|
||||
virtual ~C();
|
||||
};
|
||||
C::~C() {}
|
||||
|
||||
// CHECK: @_ZTI1C = linkonce_odr
|
||||
// CHECK: @_ZTI1B = linkonce_odr constant { i8*, i8*, i32, i32, i8*, i64 }
|
||||
// CHECK-SAME: i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2) to i8*),
|
||||
// CHECK-SAME: i8* getelementptr inbounds ([3 x i8], [3 x i8]* @_ZTS1B, i32 0, i32 0),
|
||||
|
|
Loading…
Reference in New Issue