diff options
-rw-r--r-- | src/wasm2asm.h | 13 | ||||
-rw-r--r-- | test/emcc_hello_world.2asm.js | 2118 | ||||
-rw-r--r-- | test/min.2asm.js | 19 | ||||
-rw-r--r-- | test/min.wast | 22 | ||||
-rw-r--r-- | test/min.wast.fromBinary | 23 | ||||
-rw-r--r-- | test/unit.2asm.js | 13 |
6 files changed, 73 insertions, 2135 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h index f1a58e170..ad73159e6 100644 --- a/src/wasm2asm.h +++ b/src/wasm2asm.h @@ -645,6 +645,7 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) { ret[1]->push_back(theBreak); return ret; } + Expression *defaultBody = nullptr; // default must be last in asm.js Ref visitSwitch(Switch *curr) { Ref ret = ValueBuilder::makeLabel(fromName(curr->name), ValueBuilder::makeBlock()); Ref value; @@ -658,6 +659,10 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) { Ref theSwitch = ValueBuilder::makeSwitch(value); ret[2][1]->push_back(theSwitch); for (auto& c : curr->cases) { + if (c.name == curr->default_) { + defaultBody = c.body; + continue; + } bool added = false; for (size_t i = 0; i < curr->targets.size(); i++) { if (curr->targets[i] == c.name) { @@ -665,13 +670,13 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) { added = true; } } - if (c.name == curr->default_) { - ValueBuilder::appendDefaultToSwitch(theSwitch); - added = true; - } assert(added); ValueBuilder::appendCodeToSwitch(theSwitch, blockify(visit(c.body, NO_RESULT)), false); } + if (defaultBody) { + ValueBuilder::appendDefaultToSwitch(theSwitch); + ValueBuilder::appendCodeToSwitch(theSwitch, blockify(visit(defaultBody, NO_RESULT)), false); + } return ret; } diff --git a/test/emcc_hello_world.2asm.js b/test/emcc_hello_world.2asm.js index 3dfeecd19..7664f54a6 100644 --- a/test/emcc_hello_world.2asm.js +++ b/test/emcc_hello_world.2asm.js @@ -156,2052 +156,6 @@ function asmFunc(global, env, buffer) { $retval$0 = $x; break switch$0; } - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 24: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - case 68: - case 69: - case 70: - case 71: - case 72: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - case 80: - case 81: - case 82: - case 83: - case 84: - case 85: - case 86: - case 87: - case 88: - case 89: - case 90: - case 91: - case 92: - case 93: - case 94: - case 95: - case 96: - case 97: - case 98: - case 99: - case 100: - case 101: - case 102: - case 103: - case 104: - case 105: - case 106: - case 107: - case 108: - case 109: - case 110: - case 111: - case 112: - case 113: - case 114: - case 115: - case 116: - case 117: - case 118: - case 119: - case 120: - case 121: - case 122: - case 123: - case 124: - case 125: - case 126: - case 127: - case 128: - case 129: - case 130: - case 131: - case 132: - case 133: - case 134: - case 135: - case 136: - case 137: - case 138: - case 139: - case 140: - case 141: - case 142: - case 143: - case 144: - case 145: - case 146: - case 147: - case 148: - case 149: - case 150: - case 151: - case 152: - case 153: - case 154: - case 155: - case 156: - case 157: - case 158: - case 159: - case 160: - case 161: - case 162: - case 163: - case 164: - case 165: - case 166: - case 167: - case 168: - case 169: - case 170: - case 171: - case 172: - case 173: - case 174: - case 175: - case 176: - case 177: - case 178: - case 179: - case 180: - case 181: - case 182: - case 183: - case 184: - case 185: - case 186: - case 187: - case 188: - case 189: - case 190: - case 191: - case 192: - case 193: - case 194: - case 195: - case 196: - case 197: - case 198: - case 199: - case 200: - case 201: - case 202: - case 203: - case 204: - case 205: - case 206: - case 207: - case 208: - case 209: - case 210: - case 211: - case 212: - case 213: - case 214: - case 215: - case 216: - case 217: - case 218: - case 219: - case 220: - case 221: - case 222: - case 223: - case 224: - case 225: - case 226: - case 227: - case 228: - case 229: - case 230: - case 231: - case 232: - case 233: - case 234: - case 235: - case 236: - case 237: - case 238: - case 239: - case 240: - case 241: - case 242: - case 243: - case 244: - case 245: - case 246: - case 247: - case 248: - case 249: - case 250: - case 251: - case 252: - case 253: - case 254: - case 255: - case 256: - case 257: - case 258: - case 259: - case 260: - case 261: - case 262: - case 263: - case 264: - case 265: - case 266: - case 267: - case 268: - case 269: - case 270: - case 271: - case 272: - case 273: - case 274: - case 275: - case 276: - case 277: - case 278: - case 279: - case 280: - case 281: - case 282: - case 283: - case 284: - case 285: - case 286: - case 287: - case 288: - case 289: - case 290: - case 291: - case 292: - case 293: - case 294: - case 295: - case 296: - case 297: - case 298: - case 299: - case 300: - case 301: - case 302: - case 303: - case 304: - case 305: - case 306: - case 307: - case 308: - case 309: - case 310: - case 311: - case 312: - case 313: - case 314: - case 315: - case 316: - case 317: - case 318: - case 319: - case 320: - case 321: - case 322: - case 323: - case 324: - case 325: - case 326: - case 327: - case 328: - case 329: - case 330: - case 331: - case 332: - case 333: - case 334: - case 335: - case 336: - case 337: - case 338: - case 339: - case 340: - case 341: - case 342: - case 343: - case 344: - case 345: - case 346: - case 347: - case 348: - case 349: - case 350: - case 351: - case 352: - case 353: - case 354: - case 355: - case 356: - case 357: - case 358: - case 359: - case 360: - case 361: - case 362: - case 363: - case 364: - case 365: - case 366: - case 367: - case 368: - case 369: - case 370: - case 371: - case 372: - case 373: - case 374: - case 375: - case 376: - case 377: - case 378: - case 379: - case 380: - case 381: - case 382: - case 383: - case 384: - case 385: - case 386: - case 387: - case 388: - case 389: - case 390: - case 391: - case 392: - case 393: - case 394: - case 395: - case 396: - case 397: - case 398: - case 399: - case 400: - case 401: - case 402: - case 403: - case 404: - case 405: - case 406: - case 407: - case 408: - case 409: - case 410: - case 411: - case 412: - case 413: - case 414: - case 415: - case 416: - case 417: - case 418: - case 419: - case 420: - case 421: - case 422: - case 423: - case 424: - case 425: - case 426: - case 427: - case 428: - case 429: - case 430: - case 431: - case 432: - case 433: - case 434: - case 435: - case 436: - case 437: - case 438: - case 439: - case 440: - case 441: - case 442: - case 443: - case 444: - case 445: - case 446: - case 447: - case 448: - case 449: - case 450: - case 451: - case 452: - case 453: - case 454: - case 455: - case 456: - case 457: - case 458: - case 459: - case 460: - case 461: - case 462: - case 463: - case 464: - case 465: - case 466: - case 467: - case 468: - case 469: - case 470: - case 471: - case 472: - case 473: - case 474: - case 475: - case 476: - case 477: - case 478: - case 479: - case 480: - case 481: - case 482: - case 483: - case 484: - case 485: - case 486: - case 487: - case 488: - case 489: - case 490: - case 491: - case 492: - case 493: - case 494: - case 495: - case 496: - case 497: - case 498: - case 499: - case 500: - case 501: - case 502: - case 503: - case 504: - case 505: - case 506: - case 507: - case 508: - case 509: - case 510: - case 511: - case 512: - case 513: - case 514: - case 515: - case 516: - case 517: - case 518: - case 519: - case 520: - case 521: - case 522: - case 523: - case 524: - case 525: - case 526: - case 527: - case 528: - case 529: - case 530: - case 531: - case 532: - case 533: - case 534: - case 535: - case 536: - case 537: - case 538: - case 539: - case 540: - case 541: - case 542: - case 543: - case 544: - case 545: - case 546: - case 547: - case 548: - case 549: - case 550: - case 551: - case 552: - case 553: - case 554: - case 555: - case 556: - case 557: - case 558: - case 559: - case 560: - case 561: - case 562: - case 563: - case 564: - case 565: - case 566: - case 567: - case 568: - case 569: - case 570: - case 571: - case 572: - case 573: - case 574: - case 575: - case 576: - case 577: - case 578: - case 579: - case 580: - case 581: - case 582: - case 583: - case 584: - case 585: - case 586: - case 587: - case 588: - case 589: - case 590: - case 591: - case 592: - case 593: - case 594: - case 595: - case 596: - case 597: - case 598: - case 599: - case 600: - case 601: - case 602: - case 603: - case 604: - case 605: - case 606: - case 607: - case 608: - case 609: - case 610: - case 611: - case 612: - case 613: - case 614: - case 615: - case 616: - case 617: - case 618: - case 619: - case 620: - case 621: - case 622: - case 623: - case 624: - case 625: - case 626: - case 627: - case 628: - case 629: - case 630: - case 631: - case 632: - case 633: - case 634: - case 635: - case 636: - case 637: - case 638: - case 639: - case 640: - case 641: - case 642: - case 643: - case 644: - case 645: - case 646: - case 647: - case 648: - case 649: - case 650: - case 651: - case 652: - case 653: - case 654: - case 655: - case 656: - case 657: - case 658: - case 659: - case 660: - case 661: - case 662: - case 663: - case 664: - case 665: - case 666: - case 667: - case 668: - case 669: - case 670: - case 671: - case 672: - case 673: - case 674: - case 675: - case 676: - case 677: - case 678: - case 679: - case 680: - case 681: - case 682: - case 683: - case 684: - case 685: - case 686: - case 687: - case 688: - case 689: - case 690: - case 691: - case 692: - case 693: - case 694: - case 695: - case 696: - case 697: - case 698: - case 699: - case 700: - case 701: - case 702: - case 703: - case 704: - case 705: - case 706: - case 707: - case 708: - case 709: - case 710: - case 711: - case 712: - case 713: - case 714: - case 715: - case 716: - case 717: - case 718: - case 719: - case 720: - case 721: - case 722: - case 723: - case 724: - case 725: - case 726: - case 727: - case 728: - case 729: - case 730: - case 731: - case 732: - case 733: - case 734: - case 735: - case 736: - case 737: - case 738: - case 739: - case 740: - case 741: - case 742: - case 743: - case 744: - case 745: - case 746: - case 747: - case 748: - case 749: - case 750: - case 751: - case 752: - case 753: - case 754: - case 755: - case 756: - case 757: - case 758: - case 759: - case 760: - case 761: - case 762: - case 763: - case 764: - case 765: - case 766: - case 767: - case 768: - case 769: - case 770: - case 771: - case 772: - case 773: - case 774: - case 775: - case 776: - case 777: - case 778: - case 779: - case 780: - case 781: - case 782: - case 783: - case 784: - case 785: - case 786: - case 787: - case 788: - case 789: - case 790: - case 791: - case 792: - case 793: - case 794: - case 795: - case 796: - case 797: - case 798: - case 799: - case 800: - case 801: - case 802: - case 803: - case 804: - case 805: - case 806: - case 807: - case 808: - case 809: - case 810: - case 811: - case 812: - case 813: - case 814: - case 815: - case 816: - case 817: - case 818: - case 819: - case 820: - case 821: - case 822: - case 823: - case 824: - case 825: - case 826: - case 827: - case 828: - case 829: - case 830: - case 831: - case 832: - case 833: - case 834: - case 835: - case 836: - case 837: - case 838: - case 839: - case 840: - case 841: - case 842: - case 843: - case 844: - case 845: - case 846: - case 847: - case 848: - case 849: - case 850: - case 851: - case 852: - case 853: - case 854: - case 855: - case 856: - case 857: - case 858: - case 859: - case 860: - case 861: - case 862: - case 863: - case 864: - case 865: - case 866: - case 867: - case 868: - case 869: - case 870: - case 871: - case 872: - case 873: - case 874: - case 875: - case 876: - case 877: - case 878: - case 879: - case 880: - case 881: - case 882: - case 883: - case 884: - case 885: - case 886: - case 887: - case 888: - case 889: - case 890: - case 891: - case 892: - case 893: - case 894: - case 895: - case 896: - case 897: - case 898: - case 899: - case 900: - case 901: - case 902: - case 903: - case 904: - case 905: - case 906: - case 907: - case 908: - case 909: - case 910: - case 911: - case 912: - case 913: - case 914: - case 915: - case 916: - case 917: - case 918: - case 919: - case 920: - case 921: - case 922: - case 923: - case 924: - case 925: - case 926: - case 927: - case 928: - case 929: - case 930: - case 931: - case 932: - case 933: - case 934: - case 935: - case 936: - case 937: - case 938: - case 939: - case 940: - case 941: - case 942: - case 943: - case 944: - case 945: - case 946: - case 947: - case 948: - case 949: - case 950: - case 951: - case 952: - case 953: - case 954: - case 955: - case 956: - case 957: - case 958: - case 959: - case 960: - case 961: - case 962: - case 963: - case 964: - case 965: - case 966: - case 967: - case 968: - case 969: - case 970: - case 971: - case 972: - case 973: - case 974: - case 975: - case 976: - case 977: - case 978: - case 979: - case 980: - case 981: - case 982: - case 983: - case 984: - case 985: - case 986: - case 987: - case 988: - case 989: - case 990: - case 991: - case 992: - case 993: - case 994: - case 995: - case 996: - case 997: - case 998: - case 999: - case 1e3: - case 1001: - case 1002: - case 1003: - case 1004: - case 1005: - case 1006: - case 1007: - case 1008: - case 1009: - case 1010: - case 1011: - case 1012: - case 1013: - case 1014: - case 1015: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1021: - case 1022: - case 1023: - case 1024: - case 1025: - case 1026: - case 1027: - case 1028: - case 1029: - case 1030: - case 1031: - case 1032: - case 1033: - case 1034: - case 1035: - case 1036: - case 1037: - case 1038: - case 1039: - case 1040: - case 1041: - case 1042: - case 1043: - case 1044: - case 1045: - case 1046: - case 1047: - case 1048: - case 1049: - case 1050: - case 1051: - case 1052: - case 1053: - case 1054: - case 1055: - case 1056: - case 1057: - case 1058: - case 1059: - case 1060: - case 1061: - case 1062: - case 1063: - case 1064: - case 1065: - case 1066: - case 1067: - case 1068: - case 1069: - case 1070: - case 1071: - case 1072: - case 1073: - case 1074: - case 1075: - case 1076: - case 1077: - case 1078: - case 1079: - case 1080: - case 1081: - case 1082: - case 1083: - case 1084: - case 1085: - case 1086: - case 1087: - case 1088: - case 1089: - case 1090: - case 1091: - case 1092: - case 1093: - case 1094: - case 1095: - case 1096: - case 1097: - case 1098: - case 1099: - case 1100: - case 1101: - case 1102: - case 1103: - case 1104: - case 1105: - case 1106: - case 1107: - case 1108: - case 1109: - case 1110: - case 1111: - case 1112: - case 1113: - case 1114: - case 1115: - case 1116: - case 1117: - case 1118: - case 1119: - case 1120: - case 1121: - case 1122: - case 1123: - case 1124: - case 1125: - case 1126: - case 1127: - case 1128: - case 1129: - case 1130: - case 1131: - case 1132: - case 1133: - case 1134: - case 1135: - case 1136: - case 1137: - case 1138: - case 1139: - case 1140: - case 1141: - case 1142: - case 1143: - case 1144: - case 1145: - case 1146: - case 1147: - case 1148: - case 1149: - case 1150: - case 1151: - case 1152: - case 1153: - case 1154: - case 1155: - case 1156: - case 1157: - case 1158: - case 1159: - case 1160: - case 1161: - case 1162: - case 1163: - case 1164: - case 1165: - case 1166: - case 1167: - case 1168: - case 1169: - case 1170: - case 1171: - case 1172: - case 1173: - case 1174: - case 1175: - case 1176: - case 1177: - case 1178: - case 1179: - case 1180: - case 1181: - case 1182: - case 1183: - case 1184: - case 1185: - case 1186: - case 1187: - case 1188: - case 1189: - case 1190: - case 1191: - case 1192: - case 1193: - case 1194: - case 1195: - case 1196: - case 1197: - case 1198: - case 1199: - case 1200: - case 1201: - case 1202: - case 1203: - case 1204: - case 1205: - case 1206: - case 1207: - case 1208: - case 1209: - case 1210: - case 1211: - case 1212: - case 1213: - case 1214: - case 1215: - case 1216: - case 1217: - case 1218: - case 1219: - case 1220: - case 1221: - case 1222: - case 1223: - case 1224: - case 1225: - case 1226: - case 1227: - case 1228: - case 1229: - case 1230: - case 1231: - case 1232: - case 1233: - case 1234: - case 1235: - case 1236: - case 1237: - case 1238: - case 1239: - case 1240: - case 1241: - case 1242: - case 1243: - case 1244: - case 1245: - case 1246: - case 1247: - case 1248: - case 1249: - case 1250: - case 1251: - case 1252: - case 1253: - case 1254: - case 1255: - case 1256: - case 1257: - case 1258: - case 1259: - case 1260: - case 1261: - case 1262: - case 1263: - case 1264: - case 1265: - case 1266: - case 1267: - case 1268: - case 1269: - case 1270: - case 1271: - case 1272: - case 1273: - case 1274: - case 1275: - case 1276: - case 1277: - case 1278: - case 1279: - case 1280: - case 1281: - case 1282: - case 1283: - case 1284: - case 1285: - case 1286: - case 1287: - case 1288: - case 1289: - case 1290: - case 1291: - case 1292: - case 1293: - case 1294: - case 1295: - case 1296: - case 1297: - case 1298: - case 1299: - case 1300: - case 1301: - case 1302: - case 1303: - case 1304: - case 1305: - case 1306: - case 1307: - case 1308: - case 1309: - case 1310: - case 1311: - case 1312: - case 1313: - case 1314: - case 1315: - case 1316: - case 1317: - case 1318: - case 1319: - case 1320: - case 1321: - case 1322: - case 1323: - case 1324: - case 1325: - case 1326: - case 1327: - case 1328: - case 1329: - case 1330: - case 1331: - case 1332: - case 1333: - case 1334: - case 1335: - case 1336: - case 1337: - case 1338: - case 1339: - case 1340: - case 1341: - case 1342: - case 1343: - case 1344: - case 1345: - case 1346: - case 1347: - case 1348: - case 1349: - case 1350: - case 1351: - case 1352: - case 1353: - case 1354: - case 1355: - case 1356: - case 1357: - case 1358: - case 1359: - case 1360: - case 1361: - case 1362: - case 1363: - case 1364: - case 1365: - case 1366: - case 1367: - case 1368: - case 1369: - case 1370: - case 1371: - case 1372: - case 1373: - case 1374: - case 1375: - case 1376: - case 1377: - case 1378: - case 1379: - case 1380: - case 1381: - case 1382: - case 1383: - case 1384: - case 1385: - case 1386: - case 1387: - case 1388: - case 1389: - case 1390: - case 1391: - case 1392: - case 1393: - case 1394: - case 1395: - case 1396: - case 1397: - case 1398: - case 1399: - case 1400: - case 1401: - case 1402: - case 1403: - case 1404: - case 1405: - case 1406: - case 1407: - case 1408: - case 1409: - case 1410: - case 1411: - case 1412: - case 1413: - case 1414: - case 1415: - case 1416: - case 1417: - case 1418: - case 1419: - case 1420: - case 1421: - case 1422: - case 1423: - case 1424: - case 1425: - case 1426: - case 1427: - case 1428: - case 1429: - case 1430: - case 1431: - case 1432: - case 1433: - case 1434: - case 1435: - case 1436: - case 1437: - case 1438: - case 1439: - case 1440: - case 1441: - case 1442: - case 1443: - case 1444: - case 1445: - case 1446: - case 1447: - case 1448: - case 1449: - case 1450: - case 1451: - case 1452: - case 1453: - case 1454: - case 1455: - case 1456: - case 1457: - case 1458: - case 1459: - case 1460: - case 1461: - case 1462: - case 1463: - case 1464: - case 1465: - case 1466: - case 1467: - case 1468: - case 1469: - case 1470: - case 1471: - case 1472: - case 1473: - case 1474: - case 1475: - case 1476: - case 1477: - case 1478: - case 1479: - case 1480: - case 1481: - case 1482: - case 1483: - case 1484: - case 1485: - case 1486: - case 1487: - case 1488: - case 1489: - case 1490: - case 1491: - case 1492: - case 1493: - case 1494: - case 1495: - case 1496: - case 1497: - case 1498: - case 1499: - case 1500: - case 1501: - case 1502: - case 1503: - case 1504: - case 1505: - case 1506: - case 1507: - case 1508: - case 1509: - case 1510: - case 1511: - case 1512: - case 1513: - case 1514: - case 1515: - case 1516: - case 1517: - case 1518: - case 1519: - case 1520: - case 1521: - case 1522: - case 1523: - case 1524: - case 1525: - case 1526: - case 1527: - case 1528: - case 1529: - case 1530: - case 1531: - case 1532: - case 1533: - case 1534: - case 1535: - case 1536: - case 1537: - case 1538: - case 1539: - case 1540: - case 1541: - case 1542: - case 1543: - case 1544: - case 1545: - case 1546: - case 1547: - case 1548: - case 1549: - case 1550: - case 1551: - case 1552: - case 1553: - case 1554: - case 1555: - case 1556: - case 1557: - case 1558: - case 1559: - case 1560: - case 1561: - case 1562: - case 1563: - case 1564: - case 1565: - case 1566: - case 1567: - case 1568: - case 1569: - case 1570: - case 1571: - case 1572: - case 1573: - case 1574: - case 1575: - case 1576: - case 1577: - case 1578: - case 1579: - case 1580: - case 1581: - case 1582: - case 1583: - case 1584: - case 1585: - case 1586: - case 1587: - case 1588: - case 1589: - case 1590: - case 1591: - case 1592: - case 1593: - case 1594: - case 1595: - case 1596: - case 1597: - case 1598: - case 1599: - case 1600: - case 1601: - case 1602: - case 1603: - case 1604: - case 1605: - case 1606: - case 1607: - case 1608: - case 1609: - case 1610: - case 1611: - case 1612: - case 1613: - case 1614: - case 1615: - case 1616: - case 1617: - case 1618: - case 1619: - case 1620: - case 1621: - case 1622: - case 1623: - case 1624: - case 1625: - case 1626: - case 1627: - case 1628: - case 1629: - case 1630: - case 1631: - case 1632: - case 1633: - case 1634: - case 1635: - case 1636: - case 1637: - case 1638: - case 1639: - case 1640: - case 1641: - case 1642: - case 1643: - case 1644: - case 1645: - case 1646: - case 1647: - case 1648: - case 1649: - case 1650: - case 1651: - case 1652: - case 1653: - case 1654: - case 1655: - case 1656: - case 1657: - case 1658: - case 1659: - case 1660: - case 1661: - case 1662: - case 1663: - case 1664: - case 1665: - case 1666: - case 1667: - case 1668: - case 1669: - case 1670: - case 1671: - case 1672: - case 1673: - case 1674: - case 1675: - case 1676: - case 1677: - case 1678: - case 1679: - case 1680: - case 1681: - case 1682: - case 1683: - case 1684: - case 1685: - case 1686: - case 1687: - case 1688: - case 1689: - case 1690: - case 1691: - case 1692: - case 1693: - case 1694: - case 1695: - case 1696: - case 1697: - case 1698: - case 1699: - case 1700: - case 1701: - case 1702: - case 1703: - case 1704: - case 1705: - case 1706: - case 1707: - case 1708: - case 1709: - case 1710: - case 1711: - case 1712: - case 1713: - case 1714: - case 1715: - case 1716: - case 1717: - case 1718: - case 1719: - case 1720: - case 1721: - case 1722: - case 1723: - case 1724: - case 1725: - case 1726: - case 1727: - case 1728: - case 1729: - case 1730: - case 1731: - case 1732: - case 1733: - case 1734: - case 1735: - case 1736: - case 1737: - case 1738: - case 1739: - case 1740: - case 1741: - case 1742: - case 1743: - case 1744: - case 1745: - case 1746: - case 1747: - case 1748: - case 1749: - case 1750: - case 1751: - case 1752: - case 1753: - case 1754: - case 1755: - case 1756: - case 1757: - case 1758: - case 1759: - case 1760: - case 1761: - case 1762: - case 1763: - case 1764: - case 1765: - case 1766: - case 1767: - case 1768: - case 1769: - case 1770: - case 1771: - case 1772: - case 1773: - case 1774: - case 1775: - case 1776: - case 1777: - case 1778: - case 1779: - case 1780: - case 1781: - case 1782: - case 1783: - case 1784: - case 1785: - case 1786: - case 1787: - case 1788: - case 1789: - case 1790: - case 1791: - case 1792: - case 1793: - case 1794: - case 1795: - case 1796: - case 1797: - case 1798: - case 1799: - case 1800: - case 1801: - case 1802: - case 1803: - case 1804: - case 1805: - case 1806: - case 1807: - case 1808: - case 1809: - case 1810: - case 1811: - case 1812: - case 1813: - case 1814: - case 1815: - case 1816: - case 1817: - case 1818: - case 1819: - case 1820: - case 1821: - case 1822: - case 1823: - case 1824: - case 1825: - case 1826: - case 1827: - case 1828: - case 1829: - case 1830: - case 1831: - case 1832: - case 1833: - case 1834: - case 1835: - case 1836: - case 1837: - case 1838: - case 1839: - case 1840: - case 1841: - case 1842: - case 1843: - case 1844: - case 1845: - case 1846: - case 1847: - case 1848: - case 1849: - case 1850: - case 1851: - case 1852: - case 1853: - case 1854: - case 1855: - case 1856: - case 1857: - case 1858: - case 1859: - case 1860: - case 1861: - case 1862: - case 1863: - case 1864: - case 1865: - case 1866: - case 1867: - case 1868: - case 1869: - case 1870: - case 1871: - case 1872: - case 1873: - case 1874: - case 1875: - case 1876: - case 1877: - case 1878: - case 1879: - case 1880: - case 1881: - case 1882: - case 1883: - case 1884: - case 1885: - case 1886: - case 1887: - case 1888: - case 1889: - case 1890: - case 1891: - case 1892: - case 1893: - case 1894: - case 1895: - case 1896: - case 1897: - case 1898: - case 1899: - case 1900: - case 1901: - case 1902: - case 1903: - case 1904: - case 1905: - case 1906: - case 1907: - case 1908: - case 1909: - case 1910: - case 1911: - case 1912: - case 1913: - case 1914: - case 1915: - case 1916: - case 1917: - case 1918: - case 1919: - case 1920: - case 1921: - case 1922: - case 1923: - case 1924: - case 1925: - case 1926: - case 1927: - case 1928: - case 1929: - case 1930: - case 1931: - case 1932: - case 1933: - case 1934: - case 1935: - case 1936: - case 1937: - case 1938: - case 1939: - case 1940: - case 1941: - case 1942: - case 1943: - case 1944: - case 1945: - case 1946: - case 1947: - case 1948: - case 1949: - case 1950: - case 1951: - case 1952: - case 1953: - case 1954: - case 1955: - case 1956: - case 1957: - case 1958: - case 1959: - case 1960: - case 1961: - case 1962: - case 1963: - case 1964: - case 1965: - case 1966: - case 1967: - case 1968: - case 1969: - case 1970: - case 1971: - case 1972: - case 1973: - case 1974: - case 1975: - case 1976: - case 1977: - case 1978: - case 1979: - case 1980: - case 1981: - case 1982: - case 1983: - case 1984: - case 1985: - case 1986: - case 1987: - case 1988: - case 1989: - case 1990: - case 1991: - case 1992: - case 1993: - case 1994: - case 1995: - case 1996: - case 1997: - case 1998: - case 1999: - case 2e3: - case 2001: - case 2002: - case 2003: - case 2004: - case 2005: - case 2006: - case 2007: - case 2008: - case 2009: - case 2010: - case 2011: - case 2012: - case 2013: - case 2014: - case 2015: - case 2016: - case 2017: - case 2018: - case 2019: - case 2020: - case 2021: - case 2022: - case 2023: - case 2024: - case 2025: - case 2026: - case 2027: - case 2028: - case 2029: - case 2030: - case 2031: - case 2032: - case 2033: - case 2034: - case 2035: - case 2036: - case 2037: - case 2038: - case 2039: - case 2040: - case 2041: - case 2042: - case 2043: - case 2044: - case 2045: - case 2046: default: block4 : { $sub8 = $conv + 4294966274 | 0; @@ -3328,42 +1282,6 @@ function asmFunc(global, env, buffer) { break label$break$L9; break switch$1; } - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 24: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: default: } } @@ -3908,7 +1826,6 @@ function asmFunc(global, env, buffer) { continue label$break$L1; break switch$18; } - case 5: default: block71 : { $cnt$0 = $cnt$1; @@ -5200,41 +3117,6 @@ function asmFunc(global, env, buffer) { continue label$break$L1; break switch$17; } - case 1: - case 3: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 19: - case 20: - case 21: - case 22: - case 24: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 33: - case 39: - case 41: - case 42: - case 43: - case 48: - case 49: - case 51: - case 53: - case 54: default: block229 : { $a$2 = $incdec$ptr169275; diff --git a/test/min.2asm.js b/test/min.2asm.js index 41ae054c9..4bf4cb610 100644 --- a/test/min.2asm.js +++ b/test/min.2asm.js @@ -30,6 +30,25 @@ function asmFunc(global, env, buffer) { n = wasm2asm_f32$0; } + function littleswitch(x) { + x = x | 0; + var wasm2asm_i32$0 = 0; + topmost : { + switch$0 : { + switch (x - 1 | 0) { + case 1: + wasm2asm_i32$0 = 2; + break topmost; + default: + wasm2asm_i32$0 = 1; + break topmost; + } + } + wasm2asm_i32$0 = 0; + } + return wasm2asm_i32$0 | 0; + } + return { floats: floats }; diff --git a/test/min.wast b/test/min.wast index ceaf88725..f765b64e8 100644 --- a/test/min.wast +++ b/test/min.wast @@ -24,4 +24,26 @@ ) ) ) + (func $littleswitch (param $x i32) (result i32) + (block $topmost + (tableswitch $switch$0 + (i32.sub + (get_local $x) + (i32.const 1) + ) + (table (case $switch-case$1) (case $switch-case$2)) (case $switch-case$1) + (case $switch-case$1 + (br $topmost + (i32.const 1) + ) + ) + (case $switch-case$2 + (br $topmost + (i32.const 2) + ) + ) + ) + (i32.const 0) + ) + ) ) diff --git a/test/min.wast.fromBinary b/test/min.wast.fromBinary index ce9cc77bd..5473c2474 100644 --- a/test/min.wast.fromBinary +++ b/test/min.wast.fromBinary @@ -2,6 +2,7 @@ (memory 16777216 16777216) (type $0 (func (param f32) (result f32))) (type $1 (func (param i32 i32))) + (type $2 (func (param i32) (result i32))) (export "floats" $floats) (func $floats (param $var$0 f32) (local $var$1 f32) @@ -27,5 +28,27 @@ ) ) ) + (func $littleswitch (param $var$0 i32) + (block $label$0 + (tableswitch $label$3 + (i32.sub + (get_local $var$0) + (i32.const 1) + ) + (table (case $label$1) (case $label$2)) + (case $label$1 + (br $label$0 + (i32.const 1) + ) + ) + (case $label$2 + (br $label$0 + (i32.const 2) + ) + ) + ) + (i32.const 0) + ) + ) ) diff --git a/test/unit.2asm.js b/test/unit.2asm.js index ca62fb0d9..027d4fce5 100644 --- a/test/unit.2asm.js +++ b/test/unit.2asm.js @@ -120,12 +120,6 @@ function asmFunc(global, env, buffer) { case 0: wasm2asm_i32$0 = 51; break topmost; - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: default: } } @@ -151,13 +145,6 @@ function asmFunc(global, env, buffer) { } while (0); break label$break$Lout; } - case 1: - case 2: - case 4: - case 5: - case 6: - case 7: - case 9: default: } } |