From 8bfdfbe68b3a1a50ebc0c0da52414f016f5cf7eb Mon Sep 17 00:00:00 2001 From: "Nicolas B. Pierron" Date: Fri, 28 Jun 2019 19:09:41 +0200 Subject: [PATCH] Use BB-like EBB in filetests/regalloc/*.clif --- .../filetests/regalloc/coalesce.clif | 21 ++ .../filetests/regalloc/coalescing-207.clif | 264 ++++++++++++++++++ .../filetests/regalloc/coalescing-216.clif | 15 + .../filetests/regalloc/coloring-227.clif | 15 + .../filetests/regalloc/ghost-param.clif | 3 + .../regalloc/global-constraints.clif | 3 + .../filetests/filetests/regalloc/iterate.clif | 24 ++ .../filetests/regalloc/reload-208.clif | 12 + .../filetests/filetests/regalloc/spill.clif | 3 + 9 files changed, 360 insertions(+) diff --git a/cranelift/filetests/filetests/regalloc/coalesce.clif b/cranelift/filetests/filetests/regalloc/coalesce.clif index 0085ce0fd8..f667d7440e 100644 --- a/cranelift/filetests/filetests/regalloc/coalesce.clif +++ b/cranelift/filetests/filetests/regalloc/coalesce.clif @@ -12,6 +12,9 @@ ebb0(v0: i32): ; not: copy ; v0 is used by the branch and passed as an arg - that's no conflict. brnz v0, ebb1(v0) + fallthrough ebb2 + +ebb2: ; v0 is live across the branch above. That's no conflict. v1 = iadd_imm v0, 7 jump ebb1(v1) @@ -26,6 +29,9 @@ ebb0(v0: i32): ; check: $(cp1=$V) = copy v0 ; nextln: brnz v0, ebb1($cp1) brnz v0, ebb1(v0) + fallthrough ebb2 + +ebb2: ; not: copy v1 = iadd_imm v0, 7 jump ebb1(v1) @@ -42,6 +48,9 @@ ebb0(v0: i32): ; check: $(cp1=$V) = copy v0 ; nextln: brnz v0, ebb1($cp1, v0) brnz v0, ebb1(v0, v0) + fallthrough ebb2 + +ebb2: v1 = iadd_imm v0, 7 v2 = iadd_imm v1, 56 jump ebb1(v1, v2) @@ -59,6 +68,9 @@ ebb0(v0: i32): ; not: copy ; check: brnz v0, ebb1($cp0) brnz v0, ebb1(v0) + fallthrough ebb2 + +ebb2: v1 = iadd_imm v0, 7 ; v1 and v0 interfere here: v2 = iadd_imm v0, 8 @@ -89,6 +101,9 @@ ebb1(v10: i32, v11: i32): ; not: copy ; check: brnz v13, ebb1($nv11b, v12) brnz v13, ebb1(v11, v12) + fallthrough ebb2 + +ebb2: return v12 } @@ -116,7 +131,13 @@ ebb0(v0: i32): ebb2(v3: i32, v4: i32): brnz v3, ebb2(v3, v4) + fallthrough ebb3 + +ebb3: v5 = iconst.i32 1 brnz v3, ebb2(v2, v5) + fallthrough ebb4 + +ebb4: return } diff --git a/cranelift/filetests/filetests/regalloc/coalescing-207.clif b/cranelift/filetests/filetests/regalloc/coalescing-207.clif index 30b33ee44a..3f01f6fcc5 100644 --- a/cranelift/filetests/filetests/regalloc/coalescing-207.clif +++ b/cranelift/filetests/filetests/regalloc/coalescing-207.clif @@ -22,6 +22,9 @@ ebb0(v0: i64, v1: i32, v2: i32): v6 = iconst.i32 0x4ffe v7 = icmp uge v5, v6 brz v7, ebb1 + fallthrough ebb100 + +ebb100: trap heap_oob ebb1: @@ -35,6 +38,9 @@ ebb1: v15 = iconst.i32 0x4ffe v16 = icmp.i32 uge v4, v15 brz v16, ebb2 + fallthrough ebb101 + +ebb101: trap heap_oob ebb2: @@ -46,6 +52,9 @@ ebb2: v21 = iconst.i32 0x4ffe v22 = icmp.i32 uge v2, v21 brz v22, ebb3 + fallthrough ebb102 + +ebb102: trap heap_oob ebb3: @@ -60,15 +69,24 @@ ebb3: v31 = icmp eq v29, v30 v32 = bint.i32 v31 brnz v32, ebb90(v14, v1) + fallthrough ebb103 + +ebb103: v33 = call fn0(v0, v1, v27) v34 = iconst.i32 0 v35 = iconst.i32 0 v36 = icmp eq v33, v35 v37 = bint.i32 v36 brnz v37, ebb90(v14, v34) + fallthrough ebb104 + +ebb104: v38 = iconst.i32 0x4ffe v39 = icmp.i32 uge v2, v38 brz v39, ebb4 + fallthrough ebb105 + +ebb105: trap heap_oob ebb4: @@ -81,9 +99,15 @@ ebb4: v46 = icmp eq v44, v45 v47 = bint.i32 v46 brnz v47, ebb56(v33, v14) + fallthrough ebb106 + +ebb106: v48 = iconst.i32 0x4ffe v49 = icmp.i32 uge v33, v48 brz v49, ebb5 + fallthrough ebb107 + +ebb107: trap heap_oob ebb5: @@ -96,9 +120,15 @@ ebb5: v56 = icmp eq v54, v55 v57 = bint.i32 v56 brnz v57, ebb90(v14, v34) + fallthrough ebb108 + +ebb108: v58 = iconst.i32 0x4ffe v59 = icmp.i32 uge v2, v58 brz v59, ebb6 + fallthrough ebb109 + +ebb109: trap heap_oob ebb6: @@ -111,9 +141,15 @@ ebb6: v66 = icmp eq v64, v65 v67 = bint.i32 v66 brnz v67, ebb42 + fallthrough ebb110 + +ebb110: v68 = iconst.i32 0x4ffe v69 = icmp.i32 uge v33, v68 brz v69, ebb7 + fallthrough ebb111 + +ebb111: trap heap_oob ebb7: @@ -126,9 +162,15 @@ ebb7: v76 = icmp eq v74, v75 v77 = bint.i32 v76 brnz v77, ebb90(v14, v34) + fallthrough ebb112 + +ebb112: v78 = iconst.i32 0x4ffe v79 = icmp.i32 uge v2, v78 brz v79, ebb8 + fallthrough ebb113 + +ebb113: trap heap_oob ebb8: @@ -141,9 +183,15 @@ ebb8: v86 = icmp eq v84, v85 v87 = bint.i32 v86 brnz v87, ebb46 + fallthrough ebb114 + +ebb114: v88 = iconst.i32 0x4ffe v89 = icmp.i32 uge v33, v88 brz v89, ebb9 + fallthrough ebb115 + +ebb115: trap heap_oob ebb9: @@ -156,9 +204,15 @@ ebb9: v96 = icmp eq v94, v95 v97 = bint.i32 v96 brnz v97, ebb90(v14, v34) + fallthrough ebb116 + +ebb116: v98 = iconst.i32 0x4ffe v99 = icmp.i32 uge v2, v98 brz v99, ebb10 + fallthrough ebb117 + +ebb117: trap heap_oob ebb10: @@ -171,6 +225,9 @@ ebb10: v106 = icmp eq v104, v105 v107 = bint.i32 v106 brnz v107, ebb54 + fallthrough ebb118 + +ebb118: v108 = iconst.i32 1 v109 = iadd.i32 v2, v108 v110 = iconst.i32 1048 @@ -179,6 +236,9 @@ ebb10: v113 = iconst.i32 0x4ffe v114 = icmp uge v111, v113 brz v114, ebb11 + fallthrough ebb119 + +ebb119: trap heap_oob ebb11: @@ -193,6 +253,9 @@ ebb11: v122 = iconst.i32 0x4ffe v123 = icmp uge v120, v122 brz v123, ebb12 + fallthrough ebb120 + +ebb120: trap heap_oob ebb12: @@ -205,6 +268,9 @@ ebb12: v129 = iconst.i32 0x4ffe v130 = icmp.i32 uge v14, v129 brz v130, ebb13 + fallthrough ebb121 + +ebb121: trap heap_oob ebb13: @@ -217,6 +283,9 @@ ebb13: v136 = iconst.i32 0x4ffe v137 = icmp.i32 uge v14, v136 brz v137, ebb14 + fallthrough ebb122 + +ebb122: trap heap_oob ebb14: @@ -235,6 +304,9 @@ ebb15(v143: i32, v144: i32): v148 = iconst.i32 0x4ffe v149 = icmp uge v147, v148 brz v149, ebb16 + fallthrough ebb123 + +ebb123: trap heap_oob ebb16: @@ -247,6 +319,9 @@ ebb16: v156 = icmp eq v154, v155 v157 = bint.i32 v156 brnz v157, ebb89(v14) + fallthrough ebb124 + +ebb124: v158 = iconst.i32 255 v159 = band.i32 v144, v158 v160 = iconst.i32 2 @@ -257,6 +332,9 @@ ebb16: v165 = iconst.i32 0x4ffe v166 = icmp uge v162, v165 brz v166, ebb17 + fallthrough ebb125 + +ebb125: trap heap_oob ebb17: @@ -275,6 +353,9 @@ ebb17: v178 = iconst.i32 0x4ffe v179 = icmp uge v177, v178 brz v179, ebb18 + fallthrough ebb126 + +ebb126: trap heap_oob ebb18: @@ -291,6 +372,9 @@ ebb18: v190 = iconst.i32 0x4ffe v191 = icmp.i32 uge v177, v190 brz v191, ebb19 + fallthrough ebb127 + +ebb127: trap heap_oob ebb19: @@ -307,6 +391,9 @@ ebb19: v201 = iconst.i32 0x4ffe v202 = icmp uge v200, v201 brz v202, ebb20 + fallthrough ebb128 + +ebb128: trap heap_oob ebb20: @@ -329,6 +416,9 @@ ebb21: v215 = icmp ult v213, v214 v216 = bint.i32 v215 brnz v216, ebb38(v2, v211, v209, v210, v208, v198, v213, v33, v14) + fallthrough ebb129 + +ebb129: v217 = iconst.i32 -1 v218 = iconst.i32 0 v219 = iconst.i32 1 @@ -344,6 +434,9 @@ ebb22(v223: i32, v224: i32, v225: i32, v226: i32, v227: i32, v228: i32, v229: i3 v237 = iconst.i32 0x4ffe v238 = icmp uge v236, v237 brz v238, ebb23 + fallthrough ebb130 + +ebb130: trap heap_oob ebb23: @@ -357,9 +450,15 @@ ebb23: v246 = icmp ne v243, v245 v247 = bint.i32 v246 brnz v247, ebb24 + fallthrough ebb131 + +ebb131: v248 = icmp.i32 ne v224, v226 v249 = bint.i32 v248 brnz v249, ebb25 + fallthrough ebb132 + +ebb132: v250 = iadd.i32 v227, v226 v251 = iconst.i32 1 jump ebb27(v251, v250, v223, v226) @@ -368,6 +467,9 @@ ebb24: v252 = icmp.i32 ule v243, v245 v253 = bint.i32 v252 brnz v253, ebb26 + fallthrough ebb133 + +ebb133: v254 = isub.i32 v234, v223 v255 = iconst.i32 1 jump ebb27(v255, v234, v223, v254) @@ -391,10 +493,16 @@ ebb27(v264: i32, v265: i32, v266: i32, v267: i32): v269 = icmp uge v268, v229 v270 = bint.i32 v269 brnz v270, ebb29 + fallthrough ebb134 + +ebb134: v271 = iadd.i32 v2, v268 v272 = iconst.i32 0x4ffe v273 = icmp uge v271, v272 brz v273, ebb28 + fallthrough ebb135 + +ebb135: trap heap_oob ebb28: @@ -424,6 +532,9 @@ ebb31(v285: i32, v286: i32, v287: i32, v288: i32, v289: i32, v290: i32, v291: i3 v300 = iconst.i32 0x4ffe v301 = icmp uge v299, v300 brz v301, ebb32 + fallthrough ebb136 + +ebb136: trap heap_oob ebb32: @@ -437,9 +548,15 @@ ebb32: v309 = icmp ne v306, v308 v310 = bint.i32 v309 brnz v310, ebb33 + fallthrough ebb137 + +ebb137: v311 = icmp.i32 ne v286, v288 v312 = bint.i32 v311 brnz v312, ebb34 + fallthrough ebb138 + +ebb138: v313 = iadd.i32 v289, v288 v314 = iconst.i32 1 jump ebb36(v314, v313, v285, v288) @@ -448,6 +565,9 @@ ebb33: v315 = icmp.i32 uge v306, v308 v316 = bint.i32 v315 brnz v316, ebb35 + fallthrough ebb139 + +ebb139: v317 = isub.i32 v297, v285 v318 = iconst.i32 1 jump ebb36(v318, v297, v285, v317) @@ -471,10 +591,16 @@ ebb36(v327: i32, v328: i32, v329: i32, v330: i32): v332 = icmp uge v331, v291 v333 = bint.i32 v332 brnz v333, ebb38(v2, v330, v292, v329, v293, v294, v291, v295, v296) + fallthrough ebb140 + +ebb140: v334 = iadd.i32 v2, v331 v335 = iconst.i32 0x4ffe v336 = icmp uge v334, v335 brz v336, ebb37 + fallthrough ebb141 + +ebb141: trap heap_oob ebb37: @@ -494,12 +620,18 @@ ebb38(v343: i32, v344: i32, v345: i32, v346: i32, v347: i32, v348: i32, v349: i3 v356 = icmp ugt v353, v355 v357 = bint.i32 v356 brnz v357, ebb39(v344) + fallthrough ebb142 + +ebb142: v358 = copy v345 jump ebb39(v358) ebb39(v359: i32): v360 = iadd.i32 v343, v359 brnz.i32 v357, ebb40(v346) + fallthrough ebb143 + +ebb143: v361 = copy.i32 v347 jump ebb40(v361) @@ -511,6 +643,9 @@ ebb40(v362: i32): v367 = icmp eq v365, v366 v368 = bint.i32 v367 brnz v368, ebb63 + fallthrough ebb144 + +ebb144: v369 = iconst.i32 1 v370 = iadd v362, v369 v371 = isub.i32 v348, v370 @@ -520,6 +655,9 @@ ebb40(v362: i32): v375 = bint.i32 v374 v376 = copy v362 brnz v375, ebb41(v376) + fallthrough ebb145 + +ebb145: v377 = copy v373 jump ebb41(v377) @@ -536,6 +674,9 @@ ebb42: v385 = iconst.i32 0x4ffe v386 = icmp.i32 uge v33, v385 brz v386, ebb43 + fallthrough ebb146 + +ebb146: trap heap_oob ebb43: @@ -557,6 +698,9 @@ ebb44(v392: i32, v393: i32, v394: i32): v402 = icmp eq v401, v384 v403 = bint.i32 v402 brnz v403, ebb56(v394, v14) + fallthrough ebb147 + +ebb147: v404 = iconst.i32 2 v405 = iadd v394, v404 v406 = iconst.i32 1 @@ -564,6 +708,9 @@ ebb44(v392: i32, v393: i32, v394: i32): v408 = iconst.i32 0x4ffe v409 = icmp uge v405, v408 brz v409, ebb45 + fallthrough ebb148 + +ebb148: trap heap_oob ebb45: @@ -584,6 +731,9 @@ ebb46: v420 = iconst.i32 0x4ffe v421 = icmp.i32 uge v33, v420 brz v421, ebb47 + fallthrough ebb149 + +ebb149: trap heap_oob ebb47: @@ -616,6 +766,9 @@ ebb48(v440: i32, v441: i32): v446 = iconst.i32 0x4ffe v447 = icmp uge v445, v446 brz v447, ebb49 + fallthrough ebb150 + +ebb150: trap heap_oob ebb49: @@ -628,6 +781,9 @@ ebb49: v454 = icmp eq v452, v453 v455 = bint.i32 v454 brnz v455, ebb51(v14) + fallthrough ebb151 + +ebb151: v456 = bor.i32 v441, v452 v457 = iconst.i32 8 v458 = ishl v456, v457 @@ -647,6 +803,9 @@ ebb51(v462: i32): v466 = iconst.i32 0x4ffe v467 = icmp uge v463, v466 brz v467, ebb52 + fallthrough ebb152 + +ebb152: trap heap_oob ebb52: @@ -657,6 +816,9 @@ ebb52: store.i32 v465, v471+4 v472 = iconst.i32 0 brnz.i32 v452, ebb53(v443) + fallthrough ebb153 + +ebb153: v473 = copy v472 jump ebb53(v473) @@ -673,6 +835,9 @@ ebb54: v481 = iconst.i32 0x4ffe v482 = icmp.i32 uge v33, v481 brz v482, ebb55 + fallthrough ebb154 + +ebb154: trap heap_oob ebb55: @@ -713,6 +878,9 @@ ebb58(v505: i32, v506: i32): v511 = iconst.i32 0x4ffe v512 = icmp uge v508, v511 brz v512, ebb59 + fallthrough ebb155 + +ebb155: trap heap_oob ebb59: @@ -725,6 +893,9 @@ ebb59: v519 = icmp eq v517, v518 v520 = bint.i32 v519 brnz v520, ebb61(v14) + fallthrough ebb156 + +ebb156: v521 = iconst.i32 8 v522 = ishl.i32 v506, v521 v523 = bor v522, v517 @@ -739,6 +910,9 @@ ebb60: ebb61(v526: i32): v527 = iconst.i32 0 brnz.i32 v517, ebb62(v510) + fallthrough ebb157 + +ebb157: v528 = copy v527 jump ebb62(v528) @@ -772,9 +946,15 @@ ebb65(v547: i32, v548: i32, v549: i32, v550: i32, v551: i32, v552: i32, v553: i3 v564 = icmp uge v563, v549 v565 = bint.i32 v564 brnz v565, ebb67(v547) + fallthrough ebb158 + +ebb158: v566 = iconst.i32 0 v567 = call fn2(v0, v547, v566, v550) brnz v567, ebb66 + fallthrough ebb159 + +ebb159: v568 = iadd v547, v550 jump ebb67(v568) @@ -783,6 +963,9 @@ ebb66: v570 = icmp ult v569, v549 v571 = bint.i32 v570 brnz v571, ebb89(v552) + fallthrough ebb160 + +ebb160: v572 = copy.i32 v567 jump ebb67(v572) @@ -792,6 +975,9 @@ ebb67(v573: i32): v576 = iconst.i32 0x4ffe v577 = icmp uge v575, v576 brz v577, ebb68 + fallthrough ebb161 + +ebb161: trap heap_oob ebb68: @@ -813,6 +999,9 @@ ebb68: v593 = iconst.i32 0x4ffe v594 = icmp uge v592, v593 brz v594, ebb69 + fallthrough ebb162 + +ebb162: trap heap_oob ebb69: @@ -826,12 +1015,18 @@ ebb69: v602 = icmp eq v600, v601 v603 = bint.i32 v602 brnz v603, ebb74 + fallthrough ebb163 + +ebb163: v604 = iconst.i32 2 v605 = ishl.i32 v582, v604 v606 = iadd.i32 v552, v605 v607 = iconst.i32 0x4ffe v608 = icmp uge v606, v607 brz v608, ebb70 + fallthrough ebb164 + +ebb164: trap heap_oob ebb70: @@ -845,12 +1040,18 @@ ebb70: v616 = icmp eq v614, v615 v617 = bint.i32 v616 brnz v617, ebb75 + fallthrough ebb165 + +ebb165: v618 = iconst.i32 1 v619 = iadd v614, v618 v620 = icmp ult v619, v554 v621 = bint.i32 v620 v622 = copy.i32 v553 brnz v621, ebb71(v622) + fallthrough ebb166 + +ebb166: v623 = copy v619 jump ebb71(v623) @@ -879,6 +1080,9 @@ ebb75: v634 = bint.i32 v633 v635 = copy.i32 v558 brnz v634, ebb76(v635) + fallthrough ebb167 + +ebb167: v636 = copy.i32 v555 jump ebb76(v636) @@ -887,6 +1091,9 @@ ebb76(v637: i32): v639 = iconst.i32 0x4ffe v640 = icmp uge v638, v639 brz v640, ebb77 + fallthrough ebb168 + +ebb168: trap heap_oob ebb77: @@ -899,6 +1106,9 @@ ebb77: v647 = icmp eq v645, v646 v648 = bint.i32 v647 brnz v648, ebb82(v548, v549, v551, v552) + fallthrough ebb169 + +ebb169: v649 = iadd.i32 v548, v637 v650 = iadd.i32 v559, v637 v651 = iadd.i32 v560, v637 @@ -910,6 +1120,9 @@ ebb78(v652: i32, v653: i32, v654: i32, v655: i32): v658 = iconst.i32 0x4ffe v659 = icmp uge v653, v658 brz v659, ebb79 + fallthrough ebb170 + +ebb170: trap heap_oob ebb79: @@ -923,6 +1136,9 @@ ebb79: v667 = copy.i32 v554 v668 = copy.i32 v562 brnz v666, ebb87(v548, v654, v573, v549, v550, v551, v552, v553, v667, v668, v557, v558, v559, v560, v561) + fallthrough ebb171 + +ebb171: v669 = iconst.i32 1 v670 = iadd.i32 v653, v669 v671 = iconst.i32 1 @@ -930,6 +1146,9 @@ ebb79: v673 = iconst.i32 0x4ffe v674 = icmp.i32 uge v655, v673 brz v674, ebb80 + fallthrough ebb172 + +ebb172: trap heap_oob ebb80: @@ -950,6 +1169,9 @@ ebb82(v682: i32, v683: i32, v684: i32, v685: i32): v686 = icmp.i32 ule v558, v555 v687 = bint.i32 v686 brnz v687, ebb90(v685, v682) + fallthrough ebb173 + +ebb173: v688 = copy.i32 v561 jump ebb83(v688) @@ -958,6 +1180,9 @@ ebb83(v689: i32): v691 = iconst.i32 0x4ffe v692 = icmp uge v690, v691 brz v692, ebb84 + fallthrough ebb174 + +ebb174: trap heap_oob ebb84: @@ -970,6 +1195,9 @@ ebb84: v699 = iconst.i32 0x4ffe v700 = icmp uge v698, v699 brz v700, ebb85 + fallthrough ebb175 + +ebb175: trap heap_oob ebb85: @@ -981,6 +1209,9 @@ ebb85: v706 = icmp.i32 ne v697, v705 v707 = bint.i32 v706 brnz v707, ebb86 + fallthrough ebb176 + +ebb176: v708 = icmp.i32 ule v689, v555 v709 = bint.i32 v708 v710 = iconst.i32 -1 @@ -1019,6 +1250,9 @@ ebb90(v756: i32, v757: i32): v761 = iconst.i32 0x4ffe v762 = icmp uge v758, v761 brz v762, ebb91 + fallthrough ebb177 + +ebb177: trap heap_oob ebb91: @@ -1073,6 +1307,9 @@ ebb0(v0: f64, v1: i64): v24 = icmp ult v22, v23 v25 = bint.i32 v24 brnz v25, ebb10 + fallthrough ebb178 + +ebb178: v26 = iconst.i64 0x7fff_ffff_ffff_ffff v27 = band v14, v26 v28 = iconst.i64 0x7ff0_0000_0000_0000 @@ -1086,10 +1323,16 @@ ebb10: v32 = icmp.i32 ult v22, v31 v33 = bint.i32 v32 brnz v33, ebb8 + fallthrough ebb179 + +ebb179: v34 = iconst.i32 0x3ff0_a2b2 v35 = icmp.i32 uge v22, v34 v36 = bint.i32 v35 brnz v36, ebb6 + fallthrough ebb180 + +ebb180: v37 = iconst.i32 1 v38 = bxor.i32 v17, v37 v39 = isub v38, v17 @@ -1106,6 +1349,9 @@ ebb9: v44 = bint.i32 v43 v45 = bor v42, v44 brnz v45, ebb7 + fallthrough ebb181 + +ebb181: v141 = iconst.i64 0x7fe0_0000_0000_0000 v46 = bitcast.f64 v141 v47 = fmul.f64 v0, v46 @@ -1116,6 +1362,9 @@ ebb8: v49 = icmp.i32 ule v22, v48 v50 = bint.i32 v49 brnz v50, ebb3 + fallthrough ebb182 + +ebb182: v51 = iconst.i32 0 v142 = iconst.i64 0 v52 = bitcast.f64 v142 @@ -1129,6 +1378,9 @@ ebb7: v55 = bint.i32 v54 v56 = bor v55, v44 brnz v56, ebb6 + fallthrough ebb183 + +ebb183: v144 = iconst.i64 0xb6a0_0000_0000_0000 v57 = bitcast.f64 v144 v58 = fdiv v57, v0 @@ -1165,8 +1417,14 @@ ebb6: v158 = iconst.i32 0x8000_0000 v154 = icmp ne v76, v158 brnz v154, ebb11 + fallthrough ebb184 + +ebb184: v155 = fcmp uno v75, v75 brz v155, ebb12 + fallthrough ebb185 + +ebb185: trap bad_toint ebb12: @@ -1174,6 +1432,9 @@ ebb12: v156 = bitcast.f64 v159 v157 = fcmp ge v156, v75 brz v157, ebb13 + fallthrough ebb186 + +ebb186: trap int_ovf ebb13: @@ -1230,6 +1491,9 @@ ebb4(v86: f64, v87: f64, v108: f64, v113: i32): v114 = icmp eq v113, v169 v115 = bint.i32 v114 brnz v115, ebb2(v12, v112) + fallthrough ebb187 + +ebb187: v116 = call fn0(v112, v113, v1) jump ebb2(v12, v116) diff --git a/cranelift/filetests/filetests/regalloc/coalescing-216.clif b/cranelift/filetests/filetests/regalloc/coalescing-216.clif index b4d6e6393b..4276893fd2 100644 --- a/cranelift/filetests/filetests/regalloc/coalescing-216.clif +++ b/cranelift/filetests/filetests/regalloc/coalescing-216.clif @@ -14,15 +14,27 @@ ebb0(v0: i32, v1: i64): ebb4(v11: i64, v29: i64): v6 = iconst.i32 0 brz v6, ebb14 + fallthrough ebb15 + +ebb15: v9 = iconst.i32 -17 v12 = iconst.i32 0xffff_ffff_ffff_8000 jump ebb9(v12) ebb9(v10: i32): brnz v10, ebb8(v9, v11, v11) + fallthrough ebb16 + +ebb16: brz.i32 v9, ebb13 + fallthrough ebb17 + +ebb17: v13 = iconst.i32 0 brnz v13, ebb6(v11, v11) + fallthrough ebb18 + +ebb18: v14 = iconst.i32 0 brz v14, ebb12 jump ebb11 @@ -40,6 +52,9 @@ ebb13: ebb10(v21: i64): v16 = iconst.i32 0 brnz v16, ebb6(v21, v11) + fallthrough ebb19 + +ebb19: v17 = iconst.i32 0xffff_ffff_ffff_9f35 jump ebb8(v17, v21, v11) diff --git a/cranelift/filetests/filetests/regalloc/coloring-227.clif b/cranelift/filetests/filetests/regalloc/coloring-227.clif index 7f14ca4e25..511134ddaa 100644 --- a/cranelift/filetests/filetests/regalloc/coloring-227.clif +++ b/cranelift/filetests/filetests/regalloc/coloring-227.clif @@ -17,6 +17,9 @@ function %pr227(i32 [%rdi], i32 [%rsi], i32 [%rdx], i32 [%rcx], i64 vmctx [%r8]) ebb6: [RexOp1pu_id#b8] v8 = iconst.i32 0 [RexOp1tjccb#75] brnz v8, ebb5 +[-] fallthrough ebb20 + + ebb20: [RexOp1pu_id#b8] v9 = iconst.i32 0 [RexOp1pu_id#b8] v11 = iconst.i32 0 [RexOp1icscc#39] v12 = icmp.i32 eq v15, v11 @@ -27,8 +30,14 @@ function %pr227(i32 [%rdi], i32 [%rsi], i32 [%rdx], i32 [%rcx], i64 vmctx [%r8]) ebb7: [RexOp1tjccb#74] brz.i32 v17, ebb8 +[-] fallthrough ebb17 + + ebb17: [RexOp1pu_id#b8] v18 = iconst.i32 0 [RexOp1tjccb#74] brz v18, ebb9 +[-] fallthrough ebb16 + + ebb16: [RexOp1pu_id#b8] v21 = iconst.i32 0 [RexOp1umr#89] v79 = uextend.i64 v5 [RexOp1r_ib#8083] v80 = iadd_imm.i64 v4, 0 @@ -63,8 +72,14 @@ function %pr227(i32 [%rdi], i32 [%rsi], i32 [%rdx], i32 [%rcx], i64 vmctx [%r8]) ebb2(v7: i32, v45: i32, v52: i32, v59: i32, v66: i32, v73: i32): [RexOp1pu_id#b8] v44 = iconst.i32 0 [RexOp1tjccb#74] brz v44, ebb12 +[-] fallthrough ebb18 + + ebb18: [RexOp1pu_id#b8] v50 = iconst.i32 11 [RexOp1tjccb#74] brz v50, ebb14 +[-] fallthrough ebb19 + + ebb19: [RexOp1umr#89] v82 = uextend.i64 v52 [RexOp1r_ib#8083] v83 = iadd_imm.i64 v4, 0 [RexOp1ld#808b] v84 = load.i64 v83 diff --git a/cranelift/filetests/filetests/regalloc/ghost-param.clif b/cranelift/filetests/filetests/regalloc/ghost-param.clif index 8a022b4af5..af007179dc 100644 --- a/cranelift/filetests/filetests/regalloc/ghost-param.clif +++ b/cranelift/filetests/filetests/regalloc/ghost-param.clif @@ -20,6 +20,9 @@ ebb5(v9: f64): v6 = iconst.i32 0 v7 = iconst.i32 1 brnz v7, ebb4(v6) + fallthrough ebb8 + +ebb8: v8 = iconst.i32 0 jump ebb7(v8) diff --git a/cranelift/filetests/filetests/regalloc/global-constraints.clif b/cranelift/filetests/filetests/regalloc/global-constraints.clif index e3e59dd470..4ea87eaca9 100644 --- a/cranelift/filetests/filetests/regalloc/global-constraints.clif +++ b/cranelift/filetests/filetests/regalloc/global-constraints.clif @@ -14,6 +14,9 @@ ebb0(v0: i32): v4 = icmp_imm ne v0, 4 v5 = icmp_imm sge v0, 5 brnz v5, ebb1 + fallthrough ebb2 + +ebb2: return ebb1: diff --git a/cranelift/filetests/filetests/regalloc/iterate.clif b/cranelift/filetests/filetests/regalloc/iterate.clif index 424ecfa740..fe8c9cbaef 100644 --- a/cranelift/filetests/filetests/regalloc/iterate.clif +++ b/cranelift/filetests/filetests/regalloc/iterate.clif @@ -20,6 +20,9 @@ ebb0(v0: i64, v1: f32, v2: f64, v3: i32, v4: i32, v5: i64): v44 = iconst.i64 0 v37 = icmp slt v0, v44 brnz v37, ebb2 + fallthrough ebb11 + +ebb11: v38 = fcvt_from_sint.f64 v0 jump ebb3(v38) @@ -41,6 +44,9 @@ ebb3(v15: f64): v54 = iconst.i64 0 v47 = icmp.i64 slt v13, v54 brnz v47, ebb4 + fallthrough ebb12 + +ebb12: v48 = fcvt_from_sint.f64 v13 jump ebb5(v48) @@ -57,6 +63,9 @@ ebb5(v20: f64): v63 = iconst.i64 0 v56 = icmp.i64 slt v7, v63 brnz v56, ebb6 + fallthrough ebb13 + +ebb13: v57 = fcvt_from_sint.f64 v7 jump ebb7(v57) @@ -82,8 +91,14 @@ ebb7(v21: f64): v69 = iconst.i64 0x8000_0000_0000_0000 v65 = icmp ne v30, v69 brnz v65, ebb8 + fallthrough ebb15 + +ebb15: v66 = fcmp uno v29, v29 brz v66, ebb9 + fallthrough ebb16 + +ebb16: trap bad_toint ebb9: @@ -91,6 +106,9 @@ ebb9: v67 = bitcast.f64 v70 v68 = fcmp gt v67, v29 brz v68, ebb10 + fallthrough ebb17 + +ebb17: trap int_ovf ebb10: @@ -118,6 +136,9 @@ ebb0(v0: i64): v7 = icmp uge v3, v6 ; If we're unlucky, there are no ABCD registers available for v7 at this branch. brz v7, ebb2 + fallthrough ebb4 + +ebb4: trap oob ebb2: @@ -128,6 +149,9 @@ ebb2: v11 = iadd v8, v10 v12 = load.i64 v11 brnz v12, ebb3 + fallthrough ebb5 + +ebb5: trap icall_null ebb3: diff --git a/cranelift/filetests/filetests/regalloc/reload-208.clif b/cranelift/filetests/filetests/regalloc/reload-208.clif index 116e5b719f..e89c6371ba 100644 --- a/cranelift/filetests/filetests/regalloc/reload-208.clif +++ b/cranelift/filetests/filetests/regalloc/reload-208.clif @@ -25,6 +25,9 @@ ebb0(v0: i64): v20 = iconst.i32 0x4ffe v16 = icmp uge v2, v20 brz v16, ebb5 + fallthrough ebb9 + +ebb9: trap heap_oob ebb5: @@ -44,6 +47,9 @@ ebb3(v7: i32): v26 = iconst.i32 0x4ffe v22 = icmp uge v7, v26 brz v22, ebb6 + fallthrough ebb10 + +ebb10: trap heap_oob ebb6: @@ -65,6 +71,9 @@ ebb2: v31 = iconst.i32 0x4ffe v27 = icmp uge v10, v31 brz v27, ebb7 + fallthrough ebb11 + +ebb11: trap heap_oob ebb7: @@ -78,6 +87,9 @@ ebb7: v36 = iconst.i32 0x4ffe v32 = icmp uge v13, v36 brz v32, ebb8 + fallthrough ebb12 + +ebb12: trap heap_oob ebb8: diff --git a/cranelift/filetests/filetests/regalloc/spill.clif b/cranelift/filetests/filetests/regalloc/spill.clif index 21731f321a..8cf221d5af 100644 --- a/cranelift/filetests/filetests/regalloc/spill.clif +++ b/cranelift/filetests/filetests/regalloc/spill.clif @@ -151,6 +151,9 @@ ebb0(v1: i32): ; check: v1 = spill v2 = iconst.i32 1 brnz v1, ebb1(v2, v2, v2, v2, v2, v2, v2, v2, v2, v2, v2, v2) + fallthrough ebb2 + +ebb2: return v1 ebb1(v10: i32, v11: i32, v12: i32, v13: i32, v14: i32, v15: i32, v16: i32, v17: i32, v18: i32, v19: i32, v20: i32, v21: i32):