| (module |
| (memory 1 1) |
| (func $consts |
| (drop |
| (i32.load (i32.const 0)) |
| ) |
| (drop |
| (i32.load (i32.const 1)) |
| ) |
| (drop |
| (i32.load (i32.const 1023)) |
| ) |
| (drop |
| (i32.load (i32.const 1024)) |
| ) |
| (drop |
| (i32.load offset=0 (i32.const 0)) |
| ) |
| (drop |
| (i32.load offset=1 (i32.const 0)) |
| ) |
| (drop |
| (i32.load offset=1023 (i32.const 0)) |
| ) |
| (drop |
| (i32.load offset=1024 (i32.const 0)) |
| ) |
| (drop |
| (i32.load offset=512 (i32.const 511)) |
| ) |
| (drop |
| (i32.load offset=512 (i32.const 512)) |
| ) |
| (i32.store (i32.const 1) (i32.const 1)) |
| ) |
| (func $offsets (param $x i32) |
| (drop |
| (i32.load |
| (i32.add |
| (local.get $x) |
| (i32.const 1) |
| ) |
| ) |
| ) |
| (drop |
| (i32.load |
| (i32.add |
| (local.get $x) |
| (i32.const 8) |
| ) |
| ) |
| ) |
| (drop |
| (i32.load |
| (i32.add |
| (local.get $x) |
| (i32.const 1023) |
| ) |
| ) |
| ) |
| (drop |
| (i32.load |
| (i32.add |
| (local.get $x) |
| (i32.const 1024) |
| ) |
| ) |
| ) |
| (drop |
| (i32.load |
| (i32.add |
| (local.get $x) |
| (i32.const 2048) |
| ) |
| ) |
| ) |
| (drop |
| (i32.load |
| (i32.add |
| (i32.const 4) |
| (local.get $x) |
| ) |
| ) |
| ) |
| ) |
| (func $load-off-2 (param $0 i32) (result i32) |
| (i32.store offset=2 |
| (i32.add |
| (i32.const 1) |
| (i32.const 3) |
| ) |
| (local.get $0) |
| ) |
| (i32.store offset=2 |
| (i32.add |
| (i32.const 3) |
| (i32.const 1) |
| ) |
| (local.get $0) |
| ) |
| (i32.store offset=2 |
| (i32.add |
| (local.get $0) |
| (i32.const 5) |
| ) |
| (local.get $0) |
| ) |
| (i32.store offset=2 |
| (i32.add |
| (i32.const 7) |
| (local.get $0) |
| ) |
| (local.get $0) |
| ) |
| (i32.store offset=2 |
| (i32.add |
| (i32.const -11) ;; do not fold this! |
| (local.get $0) |
| ) |
| (local.get $0) |
| ) |
| (i32.store offset=2 |
| (i32.add |
| (local.get $0) |
| (i32.const -13) ;; do not fold this! |
| ) |
| (local.get $0) |
| ) |
| (i32.store offset=2 |
| (i32.add |
| (i32.const -15) |
| (i32.const 17) |
| ) |
| (local.get $0) |
| ) |
| (i32.store offset=2 |
| (i32.add |
| (i32.const -21) |
| (i32.const 19) |
| ) |
| (local.get $0) |
| ) |
| (i32.store offset=2 |
| (i32.const 23) |
| (local.get $0) |
| ) |
| (i32.store offset=2 |
| (i32.const -25) |
| (local.get $0) |
| ) |
| (drop |
| (i32.load offset=2 |
| (i32.add |
| (i32.const 2) |
| (i32.const 4) |
| ) |
| ) |
| ) |
| (drop |
| (i32.load offset=2 |
| (i32.add |
| (i32.const 4) |
| (i32.const 2) |
| ) |
| ) |
| ) |
| (drop |
| (i32.load offset=2 |
| (i32.add |
| (local.get $0) |
| (i32.const 6) |
| ) |
| ) |
| ) |
| (drop |
| (i32.load offset=2 |
| (i32.const 8) |
| ) |
| ) |
| (i32.load offset=2 |
| (i32.add |
| (i32.const 10) |
| (local.get $0) |
| ) |
| ) |
| ) |
| (func $offset-constant |
| (drop |
| (i32.load offset=10 |
| (i32.const 0) |
| ) |
| ) |
| (drop |
| (i32.load offset=0 |
| (i32.const 10) |
| ) |
| ) |
| (drop |
| (i32.load offset=10 |
| (i32.const 10) |
| ) |
| ) |
| (drop |
| (i32.load offset=512 |
| (i32.const 512) |
| ) |
| ) |
| (drop |
| (i32.load offset=512 |
| (i32.const 511) |
| ) |
| ) |
| (drop |
| (i32.load offset=511 |
| (i32.const 512) |
| ) |
| ) |
| (drop |
| (i32.load offset=99999 |
| (i32.const 512) |
| ) |
| ) |
| ) |
| (func $offset-propagate-param (param $x i32) |
| (local $y i32) |
| (local.set $x |
| (i32.add |
| (local.get $y) |
| (i32.const 1) |
| ) |
| ) |
| (drop |
| (i32.load |
| (local.get $x) |
| ) |
| ) |
| ) |
| (func $offset-propagate |
| (local $x i32) |
| (local $y i32) |
| (local.set $x |
| (i32.add |
| (local.get $y) |
| (i32.const 1) |
| ) |
| ) |
| (drop |
| (i32.load |
| (local.get $x) |
| ) |
| ) |
| ) |
| (func $offset-propagate2 |
| (local $x i32) |
| (local $y i32) |
| (local.set $x |
| (i32.add |
| (local.get $y) |
| (i32.add |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| ) |
| (drop |
| (i32.load |
| (local.get $x) |
| ) |
| ) |
| ) |
| (func $offset-propagate3 |
| (local $x i32) |
| (local $y i32) |
| (local.set $x |
| (i32.add |
| (i32.const 1) |
| (local.get $y) |
| ) |
| ) |
| (drop |
| (i32.load |
| (local.get $x) |
| ) |
| ) |
| ) |
| (func $offset-propagate4 |
| (local $x i32) |
| (local $y i32) |
| (local.set $y (i32.const -1)) |
| (local.set $x |
| (i32.add |
| (i32.const 1) |
| (local.get $y) |
| ) |
| ) |
| (drop |
| (i32.load |
| (local.get $x) |
| ) |
| ) |
| ) |
| (func $offset-propagate5 (param $z i32) |
| (local $x i32) |
| (local $y i32) |
| (if (local.get $z) |
| (local.set $y (i32.const -1)) |
| ) |
| (local.set $x |
| (i32.add |
| (i32.const 1) |
| (local.get $y) |
| ) |
| ) |
| (drop |
| (i32.load |
| (local.get $x) |
| ) |
| ) |
| ) |
| (func $offset-propagate6 (param $z i32) |
| (local $x i32) |
| (local $y i32) |
| (local.set $y (local.get $z)) |
| (local.set $x |
| (i32.add |
| (i32.const 1) |
| (local.get $y) |
| ) |
| ) |
| (local.set $y (i32.const -2)) |
| (drop |
| (i32.load |
| (local.get $x) |
| ) |
| ) |
| ) |
| (func $offset-realistic (param $ptr i32) |
| (local $x i32) |
| (local $y i32) |
| (local $z i32) |
| (local.set $x |
| (i32.add |
| (local.get $ptr) |
| (i32.const 8) |
| ) |
| ) |
| (local.set $y |
| (i32.add |
| (local.get $ptr) |
| (i32.const 16) |
| ) |
| ) |
| (local.set $z |
| (i32.add |
| (local.get $ptr) |
| (i32.const 24) |
| ) |
| ) |
| (loop $l |
| (call $offset-realistic |
| (i32.load |
| (local.get $x) |
| ) |
| ) |
| (call $offset-realistic |
| (i32.load |
| (local.get $y) |
| ) |
| ) |
| (call $offset-realistic |
| (i32.load |
| (local.get $y) |
| ) |
| ) |
| (i32.store |
| (local.get $z) |
| (i32.add |
| (i32.load |
| (local.get $z) |
| ) |
| (i32.const 1) |
| ) |
| ) |
| (br_if $l |
| (i32.load |
| (local.get $z) |
| ) |
| ) |
| ) |
| ) |
| ) |
| |