1;;! target = "x86_64" 2;;! test = "optimize" 3 4(module 5 ;; This function body should ideally get compiled down into a single `trapz` 6 ;; CLIF instruction. 7 (func (export "trapnz") (param i32) 8 local.get 0 9 if 10 unreachable 11 end 12 ) 13 14 ;; And this one into a single `trapnz` instruction. 15 (func (export "trapz") (param i32) 16 local.get 0 17 i32.eqz 18 if 19 unreachable 20 end 21 ) 22) 23 24;; function u0:0(i64 vmctx, i64, i32) tail { 25;; gv0 = vmctx 26;; gv1 = load.i64 notrap aligned readonly gv0+8 27;; gv2 = load.i64 notrap aligned gv1+24 28;; stack_limit = gv2 29;; 30;; block0(v0: i64, v1: i64, v2: i32): 31;; @0031 trapnz v2, user11 32;; @002f jump block3 33;; 34;; block3: 35;; @0033 jump block1 36;; 37;; block1: 38;; @0033 return 39;; } 40;; 41;; function u0:1(i64 vmctx, i64, i32) tail { 42;; gv0 = vmctx 43;; gv1 = load.i64 notrap aligned readonly gv0+8 44;; gv2 = load.i64 notrap aligned gv1+24 45;; stack_limit = gv2 46;; 47;; block0(v0: i64, v1: i64, v2: i32): 48;; v5 = iconst.i32 0 49;; @0038 v3 = icmp eq v2, v5 ; v5 = 0 50;; @0038 v4 = uextend.i32 v3 51;; @003b trapnz v4, user11 52;; @0039 jump block3 53;; 54;; block3: 55;; @003d jump block1 56;; 57;; block1: 58;; @003d return 59;; } 60