1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 14:33:02 +02:00
llvm-mirror/test/Transforms/PlaceSafepoints/memset.ll
Philip Reames 1380bca61b [PlaceSafepoints] Stop special casing some intrinsics
We were special casing a handful of intrinsics as not needing a safepoint before them.  After running into another valid case - memset - I took a closer look and realized that almost no intrinsics need to have a safepoint poll before them.  Restructure the code to make that apparent so that we stop hitting these bugs.  The only intrinsics which need a safepoint poll before them are ones which can run arbitrary code.

llvm-svn: 237744
2015-05-19 23:40:11 +00:00

21 lines
524 B
LLVM

; RUN: opt -S -place-safepoints %s | FileCheck %s
define void @test(i32, i8 addrspace(1)* %ptr) gc "statepoint-example" {
; CHECK-LABEL: @test
; CHECK-NEXT: llvm.memset
; CHECK: do_safepoint
; CHECK: @foo
call void @llvm.memset.p1i8.i64(i8 addrspace(1)* %ptr, i8 0, i64 24, i32 8, i1 false)
call void @foo()
ret void
}
declare void @foo()
declare void @llvm.memset.p1i8.i64(i8 addrspace(1)*, i8, i64, i32, i1)
declare void @do_safepoint()
define void @gc.safepoint_poll() {
call void @do_safepoint()
ret void
}