1;;! target = "x86_64"
2;;! flags = "-W function-references,gc -C collector=null"
3;;! test = "optimize"
4
5(module
6  (type $ty (array (mut i64)))
7
8  (func (param (ref $ty)) (result i32)
9    (array.len (local.get 0))
10  )
11)
12;; function u0:0(i64 vmctx, i64, i32) -> i32 tail {
13;;     gv0 = vmctx
14;;     gv1 = load.i64 notrap aligned readonly gv0+8
15;;     gv2 = load.i64 notrap aligned gv1+24
16;;     gv3 = vmctx
17;;     gv4 = load.i64 notrap aligned readonly can_move gv3+8
18;;     gv5 = load.i64 notrap aligned readonly can_move gv4+32
19;;     gv6 = load.i64 notrap aligned gv4+40
20;;     stack_limit = gv2
21;;
22;;                                 block0(v0: i64, v1: i64, v2: i32):
23;; @001f                               trapz v2, user15
24;; @001f                               v10 = load.i64 notrap aligned readonly can_move v0+8
25;; @001f                               v5 = load.i64 notrap aligned readonly can_move v10+32
26;; @001f                               v4 = uextend.i64 v2
27;; @001f                               v6 = iadd v5, v4
28;; @001f                               v7 = iconst.i64 8
29;; @001f                               v8 = iadd v6, v7  ; v7 = 8
30;; @001f                               v9 = load.i32 notrap aligned readonly v8
31;; @0021                               jump block1
32;;
33;;                                 block1:
34;; @0021                               return v9
35;; }
36