+++ /dev/null
-; 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
-}