summaryrefslogtreecommitdiff
path: root/test/Transforms/RewriteStatepointsForGC/codegen-cond.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/RewriteStatepointsForGC/codegen-cond.ll')
-rw-r--r--test/Transforms/RewriteStatepointsForGC/codegen-cond.ll87
1 files changed, 47 insertions, 40 deletions
diff --git a/test/Transforms/RewriteStatepointsForGC/codegen-cond.ll b/test/Transforms/RewriteStatepointsForGC/codegen-cond.ll
index 8221cd0e0f826..9e8cbaf0260de 100644
--- a/test/Transforms/RewriteStatepointsForGC/codegen-cond.ll
+++ b/test/Transforms/RewriteStatepointsForGC/codegen-cond.ll
@@ -1,39 +1,45 @@
; RUN: opt -rewrite-statepoints-for-gc -S < %s | FileCheck %s
; A null test of a single value
+
define i1 @test(i8 addrspace(1)* %p, i1 %rare) gc "statepoint-example" {
; CHECK-LABEL: @test
entry:
- %cond = icmp eq i8 addrspace(1)* %p, null
- br i1 %rare, label %safepoint, label %continue, !prof !0
-safepoint:
- call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @safepoint, i32 0, i32 0, i32 0, i32 0)
- br label %continue
-continue:
+ %cond = icmp eq i8 addrspace(1)* %p, null
+ br i1 %rare, label %safepoint, label %continue, !prof !0
+
+safepoint: ; preds = %entry
+ call void @safepoint() [ "deopt"() ]
+ br label %continue
+
+continue: ; preds = %safepoint, %entry
; CHECK-LABEL: continue:
; CHECK: phi
; CHECK-DAG: [ %p.relocated, %safepoint ]
; CHECK-DAG: [ %p, %entry ]
; CHECK: %cond = icmp
; CHECK: br i1 %cond
- br i1 %cond, label %taken, label %untaken
-taken:
- ret i1 true
-untaken:
- ret i1 false
+; Comparing two pointers
+ br i1 %cond, label %taken, label %untaken
+
+taken: ; preds = %continue
+ ret i1 true
+
+untaken: ; preds = %continue
+ ret i1 false
}
-; Comparing two pointers
-define i1 @test2(i8 addrspace(1)* %p, i8 addrspace(1)* %q, i1 %rare)
- gc "statepoint-example" {
+define i1 @test2(i8 addrspace(1)* %p, i8 addrspace(1)* %q, i1 %rare) gc "statepoint-example" {
; CHECK-LABEL: @test2
-entry:
- %cond = icmp eq i8 addrspace(1)* %p, %q
- br i1 %rare, label %safepoint, label %continue, !prof !0
-safepoint:
- call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @safepoint, i32 0, i32 0, i32 0, i32 0)
- br label %continue
-continue:
+entry:
+ %cond = icmp eq i8 addrspace(1)* %p, %q
+ br i1 %rare, label %safepoint, label %continue, !prof !0
+
+safepoint: ; preds = %entry
+ call void @safepoint() [ "deopt"() ]
+ br label %continue
+
+continue: ; preds = %safepoint, %entry
; CHECK-LABEL: continue:
; CHECK: phi
; CHECK-DAG: [ %q.relocated, %safepoint ]
@@ -43,32 +49,33 @@ continue:
; CHECK-DAG: [ %p, %entry ]
; CHECK: %cond = icmp
; CHECK: br i1 %cond
- br i1 %cond, label %taken, label %untaken
-taken:
- ret i1 true
-untaken:
- ret i1 false
-}
-
; Sanity check that nothing bad happens if already last instruction
; before terminator
-define i1 @test3(i8 addrspace(1)* %p, i8 addrspace(1)* %q, i1 %rare)
- gc "statepoint-example" {
+ br i1 %cond, label %taken, label %untaken
+
+taken: ; preds = %continue
+ ret i1 true
+
+untaken: ; preds = %continue
+ ret i1 false
+}
+
+define i1 @test3(i8 addrspace(1)* %p, i8 addrspace(1)* %q, i1 %rare) gc "statepoint-example" {
; CHECK-LABEL: @test3
-entry:
- call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @safepoint, i32 0, i32 0, i32 0, i32 0)
; CHECK: gc.statepoint
; CHECK: %cond = icmp
; CHECK: br i1 %cond
- %cond = icmp eq i8 addrspace(1)* %p, %q
- br i1 %cond, label %taken, label %untaken
-taken:
- ret i1 true
-untaken:
- ret i1 false
+entry:
+ call void @safepoint() [ "deopt"() ]
+ %cond = icmp eq i8 addrspace(1)* %p, %q
+ br i1 %cond, label %taken, label %untaken
+
+taken: ; preds = %entry
+ ret i1 true
+
+untaken: ; preds = %entry
+ ret i1 false
}
declare void @safepoint()
-declare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64, i32, void ()*, i32, i32, ...)
-
!0 = !{!"branch_weights", i32 1, i32 10000}