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