Philip Reames fe755af3a9 Revert "Remove PlaceSafepoints pass"
This reverts commit cb66e123c6bc82a793300b6fb3ecbed79c58f557.  It was reported via https://reviews.llvm.org/rGcb66e123c6bc82a793300b6fb3ecbed79c58f557#1132969 that the Microsoft.NET compiler is still using this pass.
2022-10-13 07:17:25 -07:00

31 lines
681 B
LLVM

; If there's a call in the loop which dominates the backedge, we
; don't need a safepoint poll (since the callee must contain a
; poll test).
;; RUN: opt < %s -place-safepoints -S -enable-new-pm=0 | FileCheck %s
declare void @foo()
define void @test1() gc "statepoint-example" {
; CHECK-LABEL: test1
entry:
; CHECK-LABEL: entry
; CHECK: call void @do_safepoint
br label %loop
loop:
; CHECK-LABEL: loop
; CHECK-NOT: call void @do_safepoint
call void @foo()
br label %loop
}
; 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
}