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