Rewrite the darwin tlv support to use a chain and return to copying
[oota-llvm.git] / test / CodeGen / X86 / tlv-1.ll
index de694d8d471f8a0926cf5bedc17d2af58fe04cee..42940f147ed8361b897877182d2e61187bf1d280 100644 (file)
@@ -1,5 +1,21 @@
 ; RUN: llc < %s -mtriple x86_64-apple-darwin | FileCheck %s
 
+%struct.A = type { [48 x i8], i32, i32, i32 }
+
+@c = external thread_local global %struct.A, align 4
+
+define void @main() nounwind ssp {
+entry:
+  call void @llvm.memset.p0i8.i64(i8* getelementptr inbounds (%struct.A* @c, i32 0, i32 0, i32 0), i8 0, i64 60, i32 1, i1 false)
+  unreachable  
+  ; CHECK: movq    _c@TLVP(%rip), %rdi
+  ; CHECK-NEXT: callq   *(%rdi)
+  ; CHECK-NEXT: movl    $0, 56(%rax)
+  ; CHECK-NEXT: movq    $0, 48(%rax)
+}
+
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
 @a = thread_local global i32 0                    ; <i32*> [#uses=0]
 @b = thread_local global i32 0                    ; <i32*> [#uses=0]