This should fix the mingw bootstrap.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@217897
91177308-0d34-0410-b5e6-
96231b3b80d8
if (!llvm::GlobalAlias::isValidLinkage(Linkage))
return StructorCodegen::RAUW;
- if (llvm::GlobalValue::isWeakForLinker(Linkage))
- return StructorCodegen::COMDAT;
+ if (llvm::GlobalValue::isWeakForLinker(Linkage)) {
+ // Only ELF supports COMDATs with arbitrary names (C5/D5).
+ if (CGM.getTarget().getTriple().isOSBinFormatELF())
+ return StructorCodegen::COMDAT;
+ return StructorCodegen::Emit;
+ }
return StructorCodegen::Alias;
}
// RUN: FileCheck --check-prefix=CHECK5 --input-file=%t %s
// RUN: FileCheck --check-prefix=CHECK6 --input-file=%t %s
+// RUN: %clang_cc1 %s -triple i686-pc-windows-gnu -emit-llvm -o - -mconstructor-aliases -O1 -disable-llvm-optzns | FileCheck --check-prefix=COFF %s
+
namespace test1 {
// Test that we produce the apropriate comdats when creating aliases to
// weak_odr constructors and destructors.
// CHECK1: define weak_odr void @_ZN5test16foobarIvED0Ev({{.*}} comdat $_ZN5test16foobarIvED5Ev
// CHECK1-NOT: comdat
+// COFF doesn't support comdats with arbitrary names (C5/D5).
+// COFF-NOT: comdat
+
template <typename T>
struct foobar {
foobar() {}