alexcrichton opened issue #13990:
This program is minimized as much as possible with
wasm-tools shrinkbut is still unfortunately pretty large:<details>
(module (type (;0;) (func (param i32) (result i32))) (type (;1;) (func (param i32 i64 v128) (result i32 i64 v128))) (type (;2;) (func (param i32 i64) (result i64))) (memory (;0;) 1) (global (;0;) (mut i32) i32.const 3) (global (;1;) (mut i64) i64.const 2) (global (;2;) (mut v128) v128.const i32x4 0x735127d8 0x101dfc4c 0x00000000 0x00000000) (export "f" (func 2)) (func (;0;) (type 0) (param i32) (result i32) i32.const 0 ) (func (;1;) (type 1) (param i32 i64 v128) (result i32 i64 v128) i32.const 0 i64.const 0 local.get 2 ) (func (;2;) (type 2) (param i32 i64) (result i64) (local i32 i32 i32 i64 i64 i64 i64 i32 i32 i32 i32 i32 i32 i64 v128) block (result i64) ;; label = @1 i64.const 0 i32.const 0 br_if 0 (;@1;) drop i64.const -5711338421754897453 end block (result i64) ;; label = @1 i64.const 1 global.set 1 global.get 1 end i64.or i64.eqz i32.const 446637775 i32.and block (result i32) ;; label = @1 i32.const -1406424254 local.get 2 i32.const 1 i32.and drop call 0 local.get 2 if (result i32) ;; label = @2 i32.const 1921195370 else local.get 4 end i32.gt_u i32.const -1749529909 if (result i32) ;; label = @2 local.get 4 else local.get 4 end i32.const 1 i32.and i32.load8_s br_if 0 (;@1;) drop local.get 3 end local.get 5 i64.const 8414888160472258071 i64.ge_s i32.clz i32.extend16_s i32.gt_u local.get 4 select i32.const 1023 i32.and block (result i32) ;; label = @1 i32.const 476009111 i32.const 1 i32.eqz br_if 0 (;@1;) drop local.get 0 end i32.const 1008 i32.and i32.load block (result i32) ;; label = @1 local.get 0 i32.const 1 i32.and drop local.get 6 i64.clz i32.const -1519123096 call 0 i64.extend_i32_u i64.ge_s i32.const 1471333110 i32.const 0 local.tee 2 i32.xor br_if 0 (;@1;) drop block (result i32) ;; label = @2 local.get 2 i32.const 1918905060 i32.lt_s block (result i32) ;; label = @3 block (result i32) ;; label = @4 local.get 3 local.get 4 br_table 0 (;@4;) 1 (;@3;) 0 (;@4;) end drop local.get 0 end br_if 0 (;@2;) drop i32.const 14561677 local.tee 2 end end i32.rotl block (result i32) ;; label = @1 block (result i32) ;; label = @2 local.get 0 i64.const -5675628639357158877 v128.const i32x4 0xd2fc56a6 0xf0878b73 0x8f8ec78b 0x447623ff call 1 drop drop end i64.const 5363747676322618229 local.get 2 i8x16.splat call 1 drop drop end local.get 0 i32.gt_u block (result i32) ;; label = @1 local.get 3 block (result i32) ;; label = @2 block (result i32) ;; label = @3 local.get 4 local.get 4 br_table 0 (;@3;) 1 (;@2;) 0 (;@3;) end drop i32.const 0 end br_if 0 (;@1;) drop local.get 2 local.get 2 i32.le_u end block (result i32) ;; label = @1 local.get 3 i64.const 7071744533476972922 v128.const i32x4 0x151ff715 0xa09b1350 0x575cadbb 0x24d4eb85 call 1 drop drop end i32.clz i32.or i32.const 1 i32.and drop call 0 i32.const 1 i32.and drop call 0 i32.const 0 i32.and i32.const 16 memory.copy block ;; label = @1 global.get 1 global.set 1 i32.const 3 local.set 11 loop ;; label = @2 block ;; label = @3 block ;; label = @4 block ;; label = @5 global.get 1 local.set 1 block (result i32) ;; label = @6 i32.const -2036555229 i32.const 845971366 i32.const -1922581628 i32.const -173276392 select i32.eqz i32.rotr local.tee 0 local.get 2 i32.const 1008 i32.and i32.load8_s block (result i64) ;; label = @7 i32.const -87421239 if (result i64) ;; label = @8 local.get 1 else local.get 5 end i64.const 6899538321531476456 i64.const -3687636894700885108 i64.and i64.const -8422830880910966294 i64.const 4943946277244235565 i64.sub block (result i64) ;; label = @8 local.get 5 i64.const -1394648095061745276 i64.const -2349510720535540661 i64.const 1550820316367784105 i64.sub128 local.set 15 drop local.get 15 end i64.sub128 local.set 15 drop local.get 15 end i32.wrap_i64 i32.shl br_if 0 (;@6;) drop block (result i32) ;; label = @7 i32.const 1 i32.const -135490420 i32.const -1637671880 select i32.const 1008 i32.and i32.load8_s block (result i32) ;; label = @8 i32.const 334595627 i32.const -1449464008 i32.const 1 i32.and drop call 0 i32.const -1733147615 i64.extend_i32_s v128.const i32x4 0x3d47dd2a 0x981a2149 0xb54f5810 0x1c536a32 v128.const i32x4 0xa8040925 0x9e1f29de 0x459ce877 0x119d9fc2 i8x16.swizzle call 1 drop drop end i32.const 1 i32.and drop call 0 global.set 0 global.get 0 end end global.get 0 i32.const 3 i32.and br_table 0 (;@5;) 1 (;@4;) 2 (;@3;) end end end block (result i64) ;; label = @3 local.get 0 block (result i32) ;; label = @4 block (result i32) ;; label = @5 block (result i32) ;; label = @6 block (result i32) ;; label = @7 i32.const 0 local.get 2 br_table 0 (;@7;) 1 (;@6;) 0 (;@7;) end drop local.get 3 end local.get 4 i32.xor i32.const 1244055536 i32.const 113189742 local.get 2 i32.shr_s i32.le_u br_table 0 (;@5;) 1 (;@4;) 0 (;@5;) end drop i32.const 1 block (result i32) ;; label = @5 block (result i32) ;; label = @6 local.get 4 i32.const -637362876 br_table 0 (;@6;) 1 (;@5;) 0 (;@6;) end drop local.get 0 end i32.gt_u end i32.const 1008 i32.and i64.load8_u v128.const i32x4 0x0be5d26f 0xa0322f6f 0x52dd620b 0x070b5c19 local.get 4 i16x8.shr_u local.get 3 i32.popcnt block (result i32) ;; label = @4 local.get 0 i64.const -8302054958861359082 v128.const i32x4 0x5dcd08ac 0x5e526942 0x785b39bd 0xbe20c0fc call 1 drop drop end local.get 4 select block (result i32) ;; label = @4 i32.const -1313179990 i32.const -904460586 i32.const -1352124639 select local.get 4 local.get 0 i32.add br_if 0 (;@4;) drop local.get 0 i32.const 1008 i32.and i32.load8_s end i32.mul i8x16.shr_s call 1 drop local.set 15 drop local.get 15 end global.set 1 local.get 11 i32.const 1 i32.sub local.set 11 local.get 11 br_if 0 (;@2;) end block ;; label = @2 block ;; label = @3 block ;; label = @4 i32.const -1842640751 i32.const 1023 i32.and local.get 4 block (result i32) ;; label = @5 local.get 3 block (result i64) ;; label = @6 block (result i64) ;; label = @7 local.get 8 i64.const -6595809796573528572 i64.mul_wide_s drop end global.set 1 global.get 1 end v128.const i32x4 0x90e13e16 0x99 [message truncated]
alexcrichton edited issue #13990:
This program is minimized as much as possible with
wasm-tools shrinkbut is still unfortunately pretty large:<details>
(module (type (;0;) (func (param i32) (result i32))) (type (;1;) (func (param i32 i64 v128) (result i32 i64 v128))) (type (;2;) (func (param i32 i64) (result i64))) (memory (;0;) 1) (global (;0;) (mut i32) i32.const 3) (global (;1;) (mut i64) i64.const 2) (global (;2;) (mut v128) v128.const i32x4 0x735127d8 0x101dfc4c 0x00000000 0x00000000) (export "f" (func 2)) (func (;0;) (type 0) (param i32) (result i32) i32.const 0 ) (func (;1;) (type 1) (param i32 i64 v128) (result i32 i64 v128) i32.const 0 i64.const 0 local.get 2 ) (func (;2;) (type 2) (param i32 i64) (result i64) (local i32 i32 i32 i64 i64 i64 i64 i32 i32 i32 i32 i32 i32 i64 v128) block (result i64) ;; label = @1 i64.const 0 i32.const 0 br_if 0 (;@1;) drop i64.const -5711338421754897453 end block (result i64) ;; label = @1 i64.const 1 global.set 1 global.get 1 end i64.or i64.eqz i32.const 446637775 i32.and block (result i32) ;; label = @1 i32.const -1406424254 local.get 2 i32.const 1 i32.and drop call 0 local.get 2 if (result i32) ;; label = @2 i32.const 1921195370 else local.get 4 end i32.gt_u i32.const -1749529909 if (result i32) ;; label = @2 local.get 4 else local.get 4 end i32.const 1 i32.and i32.load8_s br_if 0 (;@1;) drop local.get 3 end local.get 5 i64.const 8414888160472258071 i64.ge_s i32.clz i32.extend16_s i32.gt_u local.get 4 select i32.const 1023 i32.and block (result i32) ;; label = @1 i32.const 476009111 i32.const 1 i32.eqz br_if 0 (;@1;) drop local.get 0 end i32.const 1008 i32.and i32.load block (result i32) ;; label = @1 local.get 0 i32.const 1 i32.and drop local.get 6 i64.clz i32.const -1519123096 call 0 i64.extend_i32_u i64.ge_s i32.const 1471333110 i32.const 0 local.tee 2 i32.xor br_if 0 (;@1;) drop block (result i32) ;; label = @2 local.get 2 i32.const 1918905060 i32.lt_s block (result i32) ;; label = @3 block (result i32) ;; label = @4 local.get 3 local.get 4 br_table 0 (;@4;) 1 (;@3;) 0 (;@4;) end drop local.get 0 end br_if 0 (;@2;) drop i32.const 14561677 local.tee 2 end end i32.rotl block (result i32) ;; label = @1 block (result i32) ;; label = @2 local.get 0 i64.const -5675628639357158877 v128.const i32x4 0xd2fc56a6 0xf0878b73 0x8f8ec78b 0x447623ff call 1 drop drop end i64.const 5363747676322618229 local.get 2 i8x16.splat call 1 drop drop end local.get 0 i32.gt_u block (result i32) ;; label = @1 local.get 3 block (result i32) ;; label = @2 block (result i32) ;; label = @3 local.get 4 local.get 4 br_table 0 (;@3;) 1 (;@2;) 0 (;@3;) end drop i32.const 0 end br_if 0 (;@1;) drop local.get 2 local.get 2 i32.le_u end block (result i32) ;; label = @1 local.get 3 i64.const 7071744533476972922 v128.const i32x4 0x151ff715 0xa09b1350 0x575cadbb 0x24d4eb85 call 1 drop drop end i32.clz i32.or i32.const 1 i32.and drop call 0 i32.const 1 i32.and drop call 0 i32.const 0 i32.and i32.const 16 memory.copy block ;; label = @1 global.get 1 global.set 1 i32.const 3 local.set 11 loop ;; label = @2 block ;; label = @3 block ;; label = @4 block ;; label = @5 global.get 1 local.set 1 block (result i32) ;; label = @6 i32.const -2036555229 i32.const 845971366 i32.const -1922581628 i32.const -173276392 select i32.eqz i32.rotr local.tee 0 local.get 2 i32.const 1008 i32.and i32.load8_s block (result i64) ;; label = @7 i32.const -87421239 if (result i64) ;; label = @8 local.get 1 else local.get 5 end i64.const 6899538321531476456 i64.const -3687636894700885108 i64.and i64.const -8422830880910966294 i64.const 4943946277244235565 i64.sub block (result i64) ;; label = @8 local.get 5 i64.const -1394648095061745276 i64.const -2349510720535540661 i64.const 1550820316367784105 i64.sub128 local.set 15 drop local.get 15 end i64.sub128 local.set 15 drop local.get 15 end i32.wrap_i64 i32.shl br_if 0 (;@6;) drop block (result i32) ;; label = @7 i32.const 1 i32.const -135490420 i32.const -1637671880 select i32.const 1008 i32.and i32.load8_s block (result i32) ;; label = @8 i32.const 334595627 i32.const -1449464008 i32.const 1 i32.and drop call 0 i32.const -1733147615 i64.extend_i32_s v128.const i32x4 0x3d47dd2a 0x981a2149 0xb54f5810 0x1c536a32 v128.const i32x4 0xa8040925 0x9e1f29de 0x459ce877 0x119d9fc2 i8x16.swizzle call 1 drop drop end i32.const 1 i32.and drop call 0 global.set 0 global.get 0 end end global.get 0 i32.const 3 i32.and br_table 0 (;@5;) 1 (;@4;) 2 (;@3;) end end end block (result i64) ;; label = @3 local.get 0 block (result i32) ;; label = @4 block (result i32) ;; label = @5 block (result i32) ;; label = @6 block (result i32) ;; label = @7 i32.const 0 local.get 2 br_table 0 (;@7;) 1 (;@6;) 0 (;@7;) end drop local.get 3 end local.get 4 i32.xor i32.const 1244055536 i32.const 113189742 local.get 2 i32.shr_s i32.le_u br_table 0 (;@5;) 1 (;@4;) 0 (;@5;) end drop i32.const 1 block (result i32) ;; label = @5 block (result i32) ;; label = @6 local.get 4 i32.const -637362876 br_table 0 (;@6;) 1 (;@5;) 0 (;@6;) end drop local.get 0 end i32.gt_u end i32.const 1008 i32.and i64.load8_u v128.const i32x4 0x0be5d26f 0xa0322f6f 0x52dd620b 0x070b5c19 local.get 4 i16x8.shr_u local.get 3 i32.popcnt block (result i32) ;; label = @4 local.get 0 i64.const -8302054958861359082 v128.const i32x4 0x5dcd08ac 0x5e526942 0x785b39bd 0xbe20c0fc call 1 drop drop end local.get 4 select block (result i32) ;; label = @4 i32.const -1313179990 i32.const -904460586 i32.const -1352124639 select local.get 4 local.get 0 i32.add br_if 0 (;@4;) drop local.get 0 i32.const 1008 i32.and i32.load8_s end i32.mul i8x16.shr_s call 1 drop local.set 15 drop local.get 15 end global.set 1 local.get 11 i32.const 1 i32.sub local.set 11 local.get 11 br_if 0 (;@2;) end block ;; label = @2 block ;; label = @3 block ;; label = @4 i32.const -1842640751 i32.const 1023 i32.and local.get 4 block (result i32) ;; label = @5 local.get 3 block (result i64) ;; label = @6 block (result i64) ;; label = @7 local.get 8 i64.const -6595809796573528572 i64.mul_wide_s drop end global.set 1 global.get 1 end v128.const i32x4 0x90e13e16 [message truncated]
alexcrichton added the bug label to Issue #13990.
alexcrichton added the cranelift label to Issue #13990.
Last updated: Jul 29 2026 at 05:03 UTC