[llvm] r180744 - Duplicate a testcase.

Bill Wendling isanbard at gmail.com
Mon Apr 29 15:45:34 PDT 2013


Rafael,

Is this okay? Should I add more?

-bw

On Apr 29, 2013, at 3:42 PM, Bill Wendling <isanbard at gmail.com> wrote:

> Author: void
> Date: Mon Apr 29 17:42:47 2013
> New Revision: 180744
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=180744&view=rev
> Log:
> Duplicate a testcase.
> 
> Added:
>    llvm/trunk/test/CodeGen/X86/tls-init-funcs.ll
> 
> Added: llvm/trunk/test/CodeGen/X86/tls-init-funcs.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls-init-funcs.ll?rev=180744&view=auto
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/tls-init-funcs.ll (added)
> +++ llvm/trunk/test/CodeGen/X86/tls-init-funcs.ll Mon Apr 29 17:42:47 2013
> @@ -0,0 +1,89 @@
> +; 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 }
> +
> + at i = thread_local global i32 37, align 4
> + at a = thread_local global %struct.A zeroinitializer, align 1
> + at b = thread_local global %struct.B zeroinitializer, align 4
> + at z = global %struct.A zeroinitializer, align 1
> + at y = global %struct.B zeroinitializer, align 4
> + at __tls_guard = internal thread_local unnamed_addr global i1 false
> + at llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
> + at llvm.tls_init_funcs = appending global [1 x void ()*] [void ()* @__tls_init]
> +
> + at _ZTH1i = alias void ()* @__tls_init
> + at _ZTH1a = alias void ()* @__tls_init
> + at _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
> +}
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list