You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.167
Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
parent
e19d552987
commit
b084638f15
@ -1,39 +0,0 @@
|
||||
;; RUN: opt < %s -rewrite-statepoints-for-gc -S | FileCheck %s
|
||||
;; RUN: opt < %s -passes=rewrite-statepoints-for-gc -S | FileCheck %s
|
||||
|
||||
;; This test is to verify that gc_result from a call statepoint
|
||||
;; can have preceding phis in its parent basic block. Unlike
|
||||
;; invoke statepoint, call statepoint does not terminate the
|
||||
;; block, and thus its gc_result is in the same block with the
|
||||
;; call statepoint.
|
||||
|
||||
declare i32 @foo()
|
||||
|
||||
define i32 @test1(i1 %cond, i32 %a) gc "statepoint-example" {
|
||||
entry:
|
||||
br i1 %cond, label %branch1, label %branch2
|
||||
|
||||
branch1:
|
||||
%b = add i32 %a, 1
|
||||
br label %merge
|
||||
|
||||
branch2:
|
||||
br label %merge
|
||||
|
||||
merge:
|
||||
;; CHECK: %phi = phi i32 [ %a, %branch2 ], [ %b, %branch1 ]
|
||||
;; CHECK-NEXT: [[TOKEN:%[^ ]+]] = call token (i64, i32, i32 ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_i32f(i64 2882400000, i32 0, i32 ()* @foo, i32 0, i32 0, i32 0, i32 0
|
||||
;; CHECK-NEXT: call i32 @llvm.experimental.gc.result.i32(token [[TOKEN]])
|
||||
%phi = phi i32 [ %a, %branch2 ], [ %b, %branch1 ]
|
||||
%ret = call i32 @foo()
|
||||
ret i32 %ret
|
||||
}
|
||||
|
||||
; This function is inlined when inserting a poll.
|
||||
declare void @do_safepoint()
|
||||
define void @gc.safepoint_poll() {
|
||||
; CHECK-LABEL: gc.safepoint_poll
|
||||
entry:
|
||||
call void @do_safepoint()
|
||||
ret void
|
||||
}
|
Reference in New Issue
Block a user