summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2013-11-14 06:54:10 +0000
committerAndrew Trick <atrick@apple.com>2013-11-14 06:54:10 +0000
commit72cf01cc7c8f668a17e7fdfe6aaed50e164cac1b (patch)
treeb9c818979a36538b2eb87abe8b9a543201e8cbd2 /test
parent27df434c5e8c78e8b3e6e9596b55a6a6bd8d5116 (diff)
downloadllvm-72cf01cc7c8f668a17e7fdfe6aaed50e164cac1b.tar.gz
llvm-72cf01cc7c8f668a17e7fdfe6aaed50e164cac1b.tar.bz2
llvm-72cf01cc7c8f668a17e7fdfe6aaed50e164cac1b.tar.xz
Minor extension to llvm.experimental.patchpoint: don't require a call.
If a null call target is provided, don't emit a dummy call. This allows the runtime to reserve as little nop space as it needs without the requirement of emitting a call. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194676 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/CodeGen/X86/patchpoint.ll16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/CodeGen/X86/patchpoint.ll b/test/CodeGen/X86/patchpoint.ll
index 5b96916804..0e79a38dd6 100644
--- a/test/CodeGen/X86/patchpoint.ll
+++ b/test/CodeGen/X86/patchpoint.ll
@@ -79,6 +79,22 @@ entry:
ret i64 10
}
+; Test small patchpoints that don't emit calls.
+define void @small_patchpoint_codegen(i64 %p1, i64 %p2, i64 %p3, i64 %p4) {
+entry:
+; CHECK-LABEL: small_patchpoint_codegen:
+; CHECK: Ltmp
+; CHECK: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: popq
+; CHECK-NEXT: ret
+ %result = tail call i64 (i32, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i32 5, i32 5, i8* null, i32 2, i64 %p1, i64 %p2)
+ ret void
+}
+
declare void @llvm.experimental.stackmap(i32, i32, ...)
declare void @llvm.experimental.patchpoint.void(i32, i32, i8*, i32, ...)
declare i64 @llvm.experimental.patchpoint.i64(i32, i32, i8*, i32, ...)