• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s
2
3declare void @f()
4declare i32 @personality_function()
5
6define void @test_id() gc "statepoint-example" personality i32 ()* @personality_function {
7; CHECK-LABEL: @test_id(
8entry:
9; CHECK-LABEL: entry:
10; CHECK: invoke token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 100, i32 0, void ()* @f
11  invoke void @f()  "statepoint-id"="100" to label %normal_return unwind label %exceptional_return
12
13normal_return:
14  ret void
15
16exceptional_return:
17  %landing_pad4 = landingpad {i8*, i32} cleanup
18  ret void
19}
20
21define void @test_num_patch_bytes() gc "statepoint-example" personality i32 ()* @personality_function {
22; CHECK-LABEL: @test_num_patch_bytes(
23entry:
24; CHECK-LABEL: entry:
25; CHECK: invoke token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 99, void ()* @f,
26  invoke void @f()  "statepoint-num-patch-bytes"="99" to label %normal_return unwind label %exceptional_return
27
28normal_return:
29  ret void
30
31exceptional_return:
32  %landing_pad4 = landingpad {i8*, i32} cleanup
33  ret void
34}
35
36declare void @do_safepoint()
37define void @gc.safepoint_poll() {
38entry:
39  call void @do_safepoint()
40  ret void
41}
42
43; CHECK-NOT: statepoint-id
44; CHECK-NOT: statepoint-num-patch_bytes
45