summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/CodeGen/AsmPrinter.h1
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp15
-rw-r--r--test/CodeGen/X86/tls-init-funcs.ll89
3 files changed, 0 insertions, 105 deletions
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h
index 4ecc7ade71..c2fd6ce367 100644
--- a/include/llvm/CodeGen/AsmPrinter.h
+++ b/include/llvm/CodeGen/AsmPrinter.h
@@ -486,7 +486,6 @@ namespace llvm {
unsigned uid) const;
void EmitLLVMUsedList(const ConstantArray *InitList);
void EmitXXStructorList(const Constant *List, bool isCtor);
- void EmitTLSInitFuncs(const ConstantArray *InitList);
GCMetadataPrinter *GetOrCreateGCPrinter(GCStrategy *C);
};
}
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 4a71ad3337..84162ace41 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1254,11 +1254,6 @@ bool AsmPrinter::EmitSpecialLLVMGlobal(const GlobalVariable *GV) {
return true;
}
- if (GV->getName() == "llvm.tls_init_funcs") {
- EmitTLSInitFuncs(cast<ConstantArray>(GV->getInitializer()));
- return true;
- }
-
return false;
}
@@ -1325,16 +1320,6 @@ void AsmPrinter::EmitXXStructorList(const Constant *List, bool isCtor) {
}
}
-/// EmitTLSInitFuncs - Emit the TLS initialization functions.
-void AsmPrinter::EmitTLSInitFuncs(const ConstantArray *InitList) {
- const DataLayout *TD = TM.getDataLayout();
- OutStreamer.SwitchSection(getObjFileLowering().getTLSThreadInitSection());
- EmitAlignment(Log2_32(TD->getPointerPrefAlignment()));
- for (unsigned I = 0, E = InitList->getNumOperands(); I != E; ++I)
- EmitGlobalConstant(
- dyn_cast<Constant>(InitList->getOperand(I)->stripPointerCasts()));
-}
-
//===--------------------------------------------------------------------===//
// Emission and print routines
//
diff --git a/test/CodeGen/X86/tls-init-funcs.ll b/test/CodeGen/X86/tls-init-funcs.ll
deleted file mode 100644
index b4eafd4050..0000000000
--- a/test/CodeGen/X86/tls-init-funcs.ll
+++ /dev/null
@@ -1,89 +0,0 @@
-; RUN: llc < %s -mtriple x86_64-apple-macosx10 | FileCheck %s
-
-; CHECK: .section __DATA,__thread_init,thread_local_init_function_pointers
-; CHECK: .align 3
-; CHECK: .quad ___tls_init
-
-%struct.A = type { i8 }
-%struct.B = type { i32 }
-
-@i = thread_local global i32 37, align 4
-@a = thread_local global %struct.A zeroinitializer, align 1
-@b = thread_local global %struct.B zeroinitializer, align 4
-@z = global %struct.A zeroinitializer, align 1
-@y = global %struct.B zeroinitializer, align 4
-@__tls_guard = internal thread_local unnamed_addr global i1 false
-@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
-@llvm.tls_init_funcs = appending global [1 x void ()*] [void ()* @__tls_init]
-
-@_ZTH1i = alias void ()* @__tls_init
-@_ZTH1a = alias void ()* @__tls_init
-@_ZTH1b = alias void ()* @__tls_init
-
-declare void @_ZN1AC1Ev(%struct.A*)
-
-declare void @_ZN1BC1Ei(%struct.B*, i32)
-
-define internal void @_GLOBAL__I_a() section "__TEXT,__StaticInit,regular,pure_instructions" {
-entry:
- tail call void @_ZN1AC1Ev(%struct.A* @z)
- tail call void @_ZN1BC1Ei(%struct.B* @y, i32 42)
- ret void
-}
-
-define internal void @__tls_init() {
-entry:
- %.b = load i1* @__tls_guard, align 1
- store i1 true, i1* @__tls_guard, align 1
- br i1 %.b, label %exit, label %init
-
-init: ; preds = %entry
- tail call void @_ZN1AC1Ev(%struct.A* @a)
- tail call void @_ZN1BC1Ei(%struct.B* @b, i32 927)
- br label %exit
-
-exit: ; preds = %entry, %init
- ret void
-}
-
-define weak_odr hidden i32* @_ZTW1i() {
- %.b.i = load i1* @__tls_guard, align 1
- store i1 true, i1* @__tls_guard, align 1
- br i1 %.b.i, label %__tls_init.exit, label %init.i
-
-init.i: ; preds = %0
- tail call void @_ZN1AC1Ev(%struct.A* @a)
- tail call void @_ZN1BC1Ei(%struct.B* @b, i32 927)
- br label %__tls_init.exit
-
-__tls_init.exit: ; preds = %0, %init.i
- ret i32* @i
-}
-
-define weak_odr hidden %struct.A* @_ZTW1a() {
- %.b.i = load i1* @__tls_guard, align 1
- store i1 true, i1* @__tls_guard, align 1
- br i1 %.b.i, label %__tls_init.exit, label %init.i
-
-init.i: ; preds = %0
- tail call void @_ZN1AC1Ev(%struct.A* @a)
- tail call void @_ZN1BC1Ei(%struct.B* @b, i32 927)
- br label %__tls_init.exit
-
-__tls_init.exit: ; preds = %0, %init.i
- ret %struct.A* @a
-}
-
-define weak_odr hidden %struct.B* @_ZTW1b() {
- %.b.i = load i1* @__tls_guard, align 1
- store i1 true, i1* @__tls_guard, align 1
- br i1 %.b.i, label %__tls_init.exit, label %init.i
-
-init.i: ; preds = %0
- tail call void @_ZN1AC1Ev(%struct.A* @a)
- tail call void @_ZN1BC1Ei(%struct.B* @b, i32 927)
- br label %__tls_init.exit
-
-__tls_init.exit: ; preds = %0, %init.i
- ret %struct.B* @b
-}