1test safepoint
2set enable_safepoints=true
3target x86_64
4
5function %test(i32, r64, r64) -> r64 {
6    block0(v0: i32, v1:r64, v2:r64):
7        jump block1(v0)
8    block1(v3: i32):
9        v4 = irsub_imm v3, 1
10        jump block2(v4)
11    block2(v5: i32):
12        resumable_trap interrupt
13        brz v5, block1(v5)
14        jump block3
15    block3:
16        v6 = null.r64
17        v7 = is_null v6
18        brnz v7, block2(v0)
19        jump block4
20    block4:
21        brnz v0, block5
22        jump block6
23    block5:
24        return v1
25    block6:
26        return v2
27}
28
29; sameln: function %test(i32 [%rdi], r64 [%rsi], r64 [%rdx]) -> r64 [%rax] fast {
30; nextln: block0(v0: i32 [%rdi], v1: r64 [%rsi], v2: r64 [%rdx]):
31; nextln:   v10 = copy v0
32; nextln:   jump block1(v10)
33; nextln:
34; nextln: block7:
35; nextln:   regmove.i32 v5, %rcx -> %rax
36; nextln:   jump block1(v5)
37; nextln:
38; nextln: block1(v3: i32 [%rax]):
39; nextln:   v8 = iconst.i32 1
40; nextln:   v4 = isub v8, v3
41; nextln:   jump block2(v4)
42; nextln:
43; nextln: block8:
44; nextln:   v9 = copy.i32 v0
45; nextln:   regmove v9, %rax -> %rcx
46; nextln:   jump block2(v9)
47; nextln:
48; nextln: block2(v5: i32 [%rcx]):
49; nextln:   safepoint v1, v2
50; nextln:   resumable_trap interrupt
51; nextln:   brz v5, block7
52; nextln:   jump block3
53; nextln:
54; nextln: block3:
55; nextln:   v6 = null.r64
56; nextln:   v7 = is_null v6
57; nextln:   brnz v7, block8
58; nextln:   jump block4
59; nextln:
60; nextln: block4:
61; nextln:   brnz.i32 v0, block5
62; nextln:   jump block6
63; nextln:
64; nextln: block5:
65; nextln:   regmove.r64 v1, %rsi -> %rax
66; nextln:   return v1
67; nextln:
68; nextln: block6:
69; nextln:   regmove.r64 v2, %rdx -> %rax
70; nextln:   return v2
71; nextln: }
72