1;;! target = "x86_64"
2;;! test = "optimize"
3;;! flags = [
4;;!   "-Ccranelift-enable-heap-access-spectre-mitigation",
5;;!   "-Oopt-level=s",
6;;!   "-Ostatic-memory-maximum-size=0",
7;;! ]
8
9(module
10  (memory (export "memory") 0)
11  (func (export "load-without-offset") (param i32) (result i32 i32)
12    local.get 0
13    i32.load
14    local.get 0
15    i32.load
16  )
17  (func (export "load-with-offset") (param i32) (result i32 i32)
18    local.get 0
19    i32.load offset=1234
20    local.get 0
21    i32.load offset=1234
22  )
23)
24
25;; function u0:0(i64 vmctx, i64, i32) -> i32, i32 tail {
26;;     gv0 = vmctx
27;;     gv1 = load.i64 notrap aligned readonly gv0+8
28;;     gv2 = load.i64 notrap aligned gv1+24
29;;     gv3 = vmctx
30;;     gv4 = load.i64 notrap aligned gv3+64
31;;     gv5 = load.i64 notrap aligned can_move gv3+56
32;;     stack_limit = gv2
33;;
34;;                                 block0(v0: i64, v1: i64, v2: i32):
35;; @0057                               v6 = load.i64 notrap aligned v0+64
36;; @0057                               v8 = load.i64 notrap aligned can_move v0+56
37;; @0057                               v5 = uextend.i64 v2
38;; @0057                               v7 = icmp ugt v5, v6
39;; @0057                               v10 = iconst.i64 0
40;; @0057                               v9 = iadd v8, v5
41;; @0057                               v11 = select_spectre_guard v7, v10, v9  ; v10 = 0
42;; @0057                               v12 = load.i32 little heap v11
43;; @005f                               jump block1
44;;
45;;                                 block1:
46;; @005f                               return v12, v12
47;; }
48;;
49;; function u0:1(i64 vmctx, i64, i32) -> i32, i32 tail {
50;;     gv0 = vmctx
51;;     gv1 = load.i64 notrap aligned readonly gv0+8
52;;     gv2 = load.i64 notrap aligned gv1+24
53;;     gv3 = vmctx
54;;     gv4 = load.i64 notrap aligned gv3+64
55;;     gv5 = load.i64 notrap aligned can_move gv3+56
56;;     stack_limit = gv2
57;;
58;;                                 block0(v0: i64, v1: i64, v2: i32):
59;; @0064                               v6 = load.i64 notrap aligned v0+64
60;; @0064                               v8 = load.i64 notrap aligned can_move v0+56
61;; @0064                               v5 = uextend.i64 v2
62;; @0064                               v7 = icmp ugt v5, v6
63;; @0064                               v12 = iconst.i64 0
64;; @0064                               v9 = iadd v8, v5
65;; @0064                               v10 = iconst.i64 1234
66;; @0064                               v11 = iadd v9, v10  ; v10 = 1234
67;; @0064                               v13 = select_spectre_guard v7, v12, v11  ; v12 = 0
68;; @0064                               v14 = load.i32 little heap v13
69;; @006e                               jump block1
70;;
71;;                                 block1:
72;; @006e                               return v14, v14
73;; }
74