.text .file "/s/llvm/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll" .globl test0 .type test0,@function test0: .param i32 .local i32 i32.const $1=, 0 .LBB0_1: loop i32.const $push1=, 1 i32.add $1=, $1, $pop1 i32.ge_s $push0=, $1, $0 br_if 1, $pop0 call something@FUNCTION br 0 .LBB0_3: end_loop return .endfunc .Lfunc_end0: .size test0, .Lfunc_end0-test0 .globl test1 .type test1,@function test1: .param i32 .local i32 i32.const $1=, 0 .LBB1_1: loop i32.const $push1=, 1 i32.add $1=, $1, $pop1 i32.ge_s $push0=, $1, $0 br_if 1, $pop0 call something@FUNCTION br 0 .LBB1_3: end_loop return .endfunc .Lfunc_end1: .size test1, .Lfunc_end1-test1 .globl test2 .type test2,@function test2: .param i32, i32 block i32.const $push0=, 1 i32.lt_s $push1=, $1, $pop0 br_if 0, $pop1 .LBB2_1: loop i32.const $push5=, -1 i32.add $1=, $1, $pop5 f64.load $push2=, 0($0) f64.const $push3=, 0x1.999999999999ap1 f64.mul $push4=, $pop2, $pop3 f64.store $discard=, 0($0), $pop4 i32.const $push6=, 8 i32.add $0=, $0, $pop6 br_if 0, $1 .LBB2_2: end_loop end_block return .endfunc .Lfunc_end2: .size test2, .Lfunc_end2-test2 .globl doublediamond .type doublediamond,@function doublediamond: .param i32, i32, i32 .result i32 i32.const $push0=, 0 i32.store $discard=, 0($2), $pop0 block block br_if 0, $0 i32.const $push4=, 1 i32.store $discard=, 0($2), $pop4 br 1 .LBB3_2: end_block i32.const $push1=, 2 i32.store $discard=, 0($2), $pop1 block br_if 0, $1 i32.const $push3=, 3 i32.store $discard=, 0($2), $pop3 br 1 .LBB3_4: end_block i32.const $push2=, 4 i32.store $discard=, 0($2), $pop2 .LBB3_5: end_block i32.const $push5=, 5 i32.store $discard=, 0($2), $pop5 i32.const $push6=, 0 return $pop6 .endfunc .Lfunc_end3: .size doublediamond, .Lfunc_end3-doublediamond .globl triangle .type triangle,@function triangle: .param i32, i32 .result i32 .local i32 i32.const $push0=, 0 i32.store $2=, 0($0), $pop0 block br_if 0, $1 i32.const $push1=, 1 i32.store $discard=, 0($0), $pop1 .LBB4_2: end_block i32.const $push2=, 2 i32.store $discard=, 0($0), $pop2 return $2 .endfunc .Lfunc_end4: .size triangle, .Lfunc_end4-triangle .globl diamond .type diamond,@function diamond: .param i32, i32 .result i32 i32.const $push0=, 0 i32.store $discard=, 0($0), $pop0 block block br_if 0, $1 i32.const $push2=, 1 i32.store $discard=, 0($0), $pop2 br 1 .LBB5_2: end_block i32.const $push1=, 2 i32.store $discard=, 0($0), $pop1 .LBB5_3: end_block i32.const $push3=, 3 i32.store $discard=, 0($0), $pop3 i32.const $push4=, 0 return $pop4 .endfunc .Lfunc_end5: .size diamond, .Lfunc_end5-diamond .globl single_block .type single_block,@function single_block: .param i32 .result i32 i32.const $push0=, 0 i32.store $push1=, 0($0), $pop0 return $pop1 .endfunc .Lfunc_end6: .size single_block, .Lfunc_end6-single_block .globl minimal_loop .type minimal_loop,@function minimal_loop: .param i32 .result i32 i32.const $push0=, 0 i32.store $discard=, 0($0), $pop0 .LBB7_1: loop i32.const $push1=, 1 i32.store $discard=, 0($0), $pop1 br 0 .LBB7_2: end_loop .endfunc .Lfunc_end7: .size minimal_loop, .Lfunc_end7-minimal_loop .globl simple_loop .type simple_loop,@function simple_loop: .param i32, i32 .result i32 i32.const $push0=, 0 i32.store $discard=, 0($0), $pop0 .LBB8_1: loop i32.const $push3=, 1 i32.store $discard=, 0($0), $pop3 i32.const $push4=, 0 i32.eq $push5=, $1, $pop4 br_if 0, $pop5 end_loop i32.const $push1=, 2 i32.store $discard=, 0($0), $pop1 i32.const $push2=, 0 return $pop2 .endfunc .Lfunc_end8: .size simple_loop, .Lfunc_end8-simple_loop .globl doubletriangle .type doubletriangle,@function doubletriangle: .param i32, i32, i32 .result i32 .local i32 i32.const $push0=, 0 i32.store $3=, 0($2), $pop0 block br_if 0, $0 i32.const $push1=, 2 i32.store $discard=, 0($2), $pop1 block br_if 0, $1 i32.const $push2=, 3 i32.store $discard=, 0($2), $pop2 .LBB9_3: end_block i32.const $push3=, 4 i32.store $discard=, 0($2), $pop3 .LBB9_4: end_block i32.const $push4=, 5 i32.store $discard=, 0($2), $pop4 return $3 .endfunc .Lfunc_end9: .size doubletriangle, .Lfunc_end9-doubletriangle .globl ifelse_earlyexits .type ifelse_earlyexits,@function ifelse_earlyexits: .param i32, i32, i32 .result i32 i32.const $push0=, 0 i32.store $discard=, 0($2), $pop0 block block br_if 0, $0 i32.const $push3=, 1 i32.store $discard=, 0($2), $pop3 br 1 .LBB10_2: end_block i32.const $push1=, 2 i32.store $discard=, 0($2), $pop1 br_if 0, $1 i32.const $push2=, 3 i32.store $discard=, 0($2), $pop2 .LBB10_4: end_block i32.const $push4=, 4 i32.store $discard=, 0($2), $pop4 i32.const $push5=, 0 return $pop5 .endfunc .Lfunc_end10: .size ifelse_earlyexits, .Lfunc_end10-ifelse_earlyexits .globl doublediamond_in_a_loop .type doublediamond_in_a_loop,@function doublediamond_in_a_loop: .param i32, i32, i32 .result i32 .LBB11_1: loop i32.const $push0=, 0 i32.store $discard=, 0($2), $pop0 block block br_if 0, $0 i32.const $push1=, 1 i32.store $discard=, 0($2), $pop1 br 1 .LBB11_3: end_block i32.const $push2=, 2 i32.store $discard=, 0($2), $pop2 block br_if 0, $1 i32.const $push3=, 3 i32.store $discard=, 0($2), $pop3 br 1 .LBB11_5: end_block i32.const $push4=, 4 i32.store $discard=, 0($2), $pop4 .LBB11_6: end_block i32.const $push5=, 5 i32.store $discard=, 0($2), $pop5 br 0 .LBB11_7: end_loop .endfunc .Lfunc_end11: .size doublediamond_in_a_loop, .Lfunc_end11-doublediamond_in_a_loop .globl test3 .type test3,@function test3: .param i32 block i32.const $push0=, 0 br_if 0, $pop0 .LBB12_1: loop br_if 1, $0 .LBB12_2: loop i32.ne $push1=, $0, $0 br_if 0, $pop1 end_loop call bar@FUNCTION br 0 .LBB12_4: end_loop unreachable .LBB12_5: end_block return .endfunc .Lfunc_end12: .size test3, .Lfunc_end12-test3 .globl test4 .type test4,@function test4: .param i32 block block block i32.const $push0=, 3 i32.gt_s $push1=, $0, $pop0 br_if 0, $pop1 block i32.const $push8=, 0 i32.eq $push9=, $0, $pop8 br_if 0, $pop9 i32.const $push6=, 2 i32.ne $push7=, $0, $pop6 br_if 2, $pop7 .LBB13_3: end_block return .LBB13_4: end_block i32.const $push2=, 4 i32.eq $push3=, $0, $pop2 br_if 1, $pop3 i32.const $push4=, 622 i32.ne $push5=, $0, $pop4 br_if 0, $pop5 return .LBB13_7: end_block return .LBB13_8: end_block return .endfunc .Lfunc_end13: .size test4, .Lfunc_end13-test4 .globl test5 .type test5,@function test5: .param i32, i32 .local i32 i32.const $push5=, 1 i32.and $0=, $0, $pop5 i32.const $push4=, 1 i32.and $2=, $1, $pop4 .LBB14_1: block loop i32.const $push7=, 0 i32.const $push6=, 0 i32.store $1=, 0($pop7), $pop6 i32.const $push9=, 0 i32.eq $push10=, $0, $pop9 br_if 2, $pop10 i32.const $push8=, 1 i32.store $discard=, 0($1), $pop8 br_if 0, $2 end_loop i32.const $push2=, 0 i32.const $push3=, 3 i32.store $discard=, 0($pop2), $pop3 return .LBB14_4: end_block i32.const $push0=, 0 i32.const $push1=, 2 i32.store $discard=, 0($pop0), $pop1 return .endfunc .Lfunc_end14: .size test5, .Lfunc_end14-test5 .globl test6 .type test6,@function test6: .param i32, i32 .local i32, i32, i32 i32.const $push8=, 1 i32.and $2=, $0, $pop8 .LBB15_1: block block loop i32.const $push10=, 0 i32.const $push9=, 0 i32.store $0=, 0($pop10), $pop9 i32.const $push14=, 0 i32.eq $push15=, $2, $pop14 br_if 3, $pop15 i32.const $push13=, 1 i32.store $push0=, 0($0), $pop13 tee_local $push12=, $4=, $pop0 i32.and $push1=, $1, $pop12 tee_local $push11=, $3=, $pop1 i32.const $push16=, 0 i32.eq $push17=, $pop11, $pop16 br_if 2, $pop17 i32.store $discard=, 0($0), $4 br_if 0, $3 end_loop i32.const $push6=, 0 i32.const $push7=, 2 i32.store $discard=, 0($pop6), $pop7 return .LBB15_5: end_block i32.const $push2=, 0 i32.const $push3=, 3 i32.store $discard=, 0($pop2), $pop3 .LBB15_6: end_block i32.const $push4=, 0 i32.const $push5=, 4 i32.store $discard=, 0($pop4), $pop5 return .endfunc .Lfunc_end15: .size test6, .Lfunc_end15-test6 .globl test7 .type test7,@function test7: .param i32, i32 .local i32, i32 i32.const $push0=, 0 i32.const $push8=, 0 i32.store $2=, 0($pop0), $pop8 i32.const $push7=, 1 i32.and $3=, $0, $pop7 .LBB16_1: loop i32.const $push9=, 1 i32.store $0=, 0($2), $pop9 block br_if 0, $3 i32.const $push10=, 2 i32.store $discard=, 0($2), $pop10 i32.and $push1=, $1, $0 br_if 1, $pop1 i32.const $push2=, 0 i32.const $push3=, 4 i32.store $discard=, 0($pop2), $pop3 unreachable .LBB16_4: end_block i32.const $push11=, 3 i32.store $discard=, 0($2), $pop11 i32.and $push4=, $1, $0 br_if 0, $pop4 end_loop i32.const $push5=, 0 i32.const $push6=, 5 i32.store $discard=, 0($pop5), $pop6 unreachable .endfunc .Lfunc_end16: .size test7, .Lfunc_end16-test7 .globl test8 .type test8,@function test8: .result i32 .LBB17_1: loop block i32.const $push0=, 0 i32.const $push3=, 0 i32.eq $push4=, $pop0, $pop3 br_if 0, $pop4 i32.const $push2=, 0 i32.const $push5=, 0 i32.eq $push6=, $pop2, $pop5 br_if 1, $pop6 .LBB17_3: end_block loop i32.const $push1=, 0 br_if 0, $pop1 br 2 .LBB17_4: end_loop end_loop .endfunc .Lfunc_end17: .size test8, .Lfunc_end17-test8 .globl test9 .type test9,@function test9: .local i32, i32 i32.const $push0=, 0 i32.const $push12=, 0 i32.store $0=, 0($pop0), $pop12 .LBB18_1: loop i32.const $push14=, 1 i32.store $push1=, 0($0), $pop14 tee_local $push13=, $1=, $pop1 i32.call $push2=, a@FUNCTION i32.and $push3=, $pop13, $pop2 i32.const $push18=, 0 i32.eq $push19=, $pop3, $pop18 br_if 1, $pop19 .LBB18_2: loop i32.const $push15=, 2 i32.store $discard=, 0($0), $pop15 block i32.call $push6=, a@FUNCTION i32.and $push7=, $pop6, $1 i32.const $push20=, 0 i32.eq $push21=, $pop7, $pop20 br_if 0, $pop21 i32.const $push16=, 3 i32.store $discard=, 0($0), $pop16 i32.call $push10=, a@FUNCTION i32.and $push11=, $pop10, $1 br_if 1, $pop11 br 3 .LBB18_4: end_block i32.const $push17=, 4 i32.store $discard=, 0($0), $pop17 i32.call $push8=, a@FUNCTION i32.and $push9=, $pop8, $1 br_if 0, $pop9 br 2 .LBB18_5: end_loop end_loop i32.const $push4=, 0 i32.const $push5=, 5 i32.store $discard=, 0($pop4), $pop5 return .endfunc .Lfunc_end18: .size test9, .Lfunc_end18-test9 .globl test10 .type test10,@function test10: .local i32, i32, i32, i32, i32 i32.const $0=, 2 .LBB19_1: loop copy_local $4=, $1 copy_local $3=, $0 i32.const $1=, 0 i32.const $0=, 3 i32.const $2=, 4 br_if 0, $4 .LBB19_2: block loop copy_local $4=, $3 copy_local $3=, $2 .LBB19_3: loop copy_local $2=, $4 i32.const $push1=, 4 i32.gt_u $push0=, $2, $pop1 br_if 5, $pop0 copy_local $4=, $3 tableswitch $2, 0, 0, 1, 5, 2, 4 .LBB19_5: end_loop end_loop return .LBB19_6: end_block i32.const $1=, 1 br 0 .LBB19_7: end_loop .endfunc .Lfunc_end19: .size test10, .Lfunc_end19-test10 .globl test11 .type test11,@function test11: .local i32 block block block block i32.const $push0=, 0 i32.const $push15=, 0 i32.store $push1=, 0($pop0), $pop15 tee_local $push14=, $0=, $pop1 br_if 0, $pop14 i32.const $push7=, 1 i32.store $discard=, 0($0), $pop7 block br_if 0, $0 i32.const $push9=, 0 i32.const $push8=, 2 i32.store $discard=, 0($pop9), $pop8 i32.const $push16=, 0 br_if 2, $pop16 .LBB20_3: end_block i32.const $push12=, 0 i32.const $push13=, 3 i32.store $discard=, 0($pop12), $pop13 return .LBB20_4: end_block i32.const $push2=, 4 i32.store $discard=, 0($0), $pop2 br_if 2, $0 i32.const $push18=, 0 i32.const $push3=, 5 i32.store $discard=, 0($pop18), $pop3 i32.const $push17=, 0 i32.const $push20=, 0 i32.eq $push21=, $pop17, $pop20 br_if 1, $pop21 .LBB20_6: end_block i32.const $push10=, 0 i32.const $push11=, 7 i32.store $discard=, 0($pop10), $pop11 return .LBB20_7: end_block i32.const $push19=, 0 i32.const $push4=, 6 i32.store $discard=, 0($pop19), $pop4 return .LBB20_8: end_block i32.const $push5=, 0 i32.const $push6=, 8 i32.store $discard=, 0($pop5), $pop6 return .endfunc .Lfunc_end20: .size test11, .Lfunc_end20-test11 .globl test12 .type test12,@function test12: .param i32 .local i32 .LBB21_1: loop block block block i32.load8_u $push0=, 0($0) tee_local $push7=, $1=, $pop0 i32.const $push6=, 103 i32.gt_s $push1=, $pop7, $pop6 br_if 0, $pop1 i32.const $push8=, 42 i32.eq $push4=, $1, $pop8 br_if 2, $pop4 i32.const $push9=, 76 i32.eq $push5=, $1, $pop9 br_if 2, $pop5 br 1 .LBB21_4: end_block i32.const $push10=, 108 i32.eq $push2=, $1, $pop10 br_if 1, $pop2 i32.const $push11=, 104 i32.eq $push3=, $1, $pop11 br_if 1, $pop3 .LBB21_6: end_block return .LBB21_7: end_block i32.const $push12=, 1 i32.add $0=, $0, $pop12 br 0 .LBB21_8: end_loop .endfunc .Lfunc_end21: .size test12, .Lfunc_end21-test12 .globl test13 .type test13,@function test13: .local i32 block i32.const $push0=, 0 i32.const $push4=, 0 i32.eq $push5=, $pop0, $pop4 br_if 0, $pop5 return .LBB22_2: end_block i32.const $0=, 0 block i32.const $push3=, 0 br_if 0, $pop3 i32.const $0=, 0 .LBB22_4: end_block block i32.const $push1=, 1 i32.and $push2=, $0, $pop1 i32.const $push6=, 0 i32.eq $push7=, $pop2, $pop6 br_if 0, $pop7 end_block unreachable .endfunc .Lfunc_end22: .size test13, .Lfunc_end22-test13 .globl test14 .type test14,@function test14: .LBB23_1: loop i32.const $push0=, 0 br_if 0, $pop0 .LBB23_2: end_loop loop i32.const $discard=, 0 i32.const $push1=, 0 br_if 0, $pop1 end_loop return .endfunc .Lfunc_end23: .size test14, .Lfunc_end23-test14