diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/passes/Oz.txt | 28 | ||||
-rw-r--r-- | test/passes/coalesce-locals.txt | 91 | ||||
-rw-r--r-- | test/passes/coalesce-locals.wast | 71 | ||||
-rw-r--r-- | test/passes/flatten_local-cse.txt | 764 | ||||
-rw-r--r-- | test/passes/flatten_local-cse.wast (renamed from test/passes/local-cse.wast) | 97 | ||||
-rw-r--r-- | test/passes/flatten_local-cse_Os.txt | 27 | ||||
-rw-r--r-- | test/passes/flatten_local-cse_Os.wast | 39 | ||||
-rw-r--r-- | test/passes/local-cse.txt | 184 | ||||
-rw-r--r-- | test/passes/local-cse_ignore-implicit-traps.txt | 30 | ||||
-rw-r--r-- | test/passes/local-cse_ignore-implicit-traps.wast | 20 | ||||
-rw-r--r-- | test/passes/simplify-locals.wast | 1 |
11 files changed, 1103 insertions, 249 deletions
diff --git a/test/passes/Oz.txt b/test/passes/Oz.txt index c0f5252e6..883ccc476 100644 --- a/test/passes/Oz.txt +++ b/test/passes/Oz.txt @@ -5,26 +5,23 @@ (export "localcse" (func $basics)) (export "localcse-2" (func $8)) (func $basics (; 0 ;) (type $0) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) (i32.add - (tee_local $2 - (i32.add - (get_local $0) - (get_local $1) - ) + (i32.add + (get_local $0) + (get_local $1) + ) + (i32.add + (get_local $0) + (get_local $1) ) - (get_local $2) ) ) (func $8 (; 1 ;) (type $1) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) (i32.store (tee_local $2 - (tee_local $4 - (i32.add - (get_local $1) - (i32.const 4) - ) + (i32.add + (get_local $1) + (i32.const 4) ) ) (i32.and @@ -36,7 +33,10 @@ ) (i32.store (tee_local $1 - (get_local $4) + (i32.add + (get_local $1) + (i32.const 4) + ) ) (i32.or (i32.load diff --git a/test/passes/coalesce-locals.txt b/test/passes/coalesce-locals.txt index b7544af44..4f856d0dc 100644 --- a/test/passes/coalesce-locals.txt +++ b/test/passes/coalesce-locals.txt @@ -8,6 +8,8 @@ (type $FUNCSIG$vi (func (param i32))) (type $7 (func (param i32) (result i32))) (type $8 (func (param f64 i32) (result i64))) + (type $9 (func (param i32 i32))) + (type $10 (func (result f64))) (import "env" "_emscripten_autodebug_i32" (func $_emscripten_autodebug_i32 (param i32 i32) (result i32))) (import "env" "get" (func $get (result i32))) (import "env" "set" (func $set (param i32))) @@ -1153,4 +1155,93 @@ ) ) ) + (func $pick (; 52 ;) (type $2) + (local $0 i32) + (nop) + (if + (i32.const 1) + (drop + (i32.const 1) + ) + ) + (nop) + (nop) + ) + (func $pick-2 (; 53 ;) (type $2) + (local $0 i32) + (nop) + (if + (i32.const 1) + (drop + (i32.const 1) + ) + ) + (nop) + (nop) + ) + (func $many (; 54 ;) (type $2) + (local $0 i32) + (nop) + (nop) + (nop) + (nop) + (if + (i32.const 1) + (drop + (i32.const 1) + ) + ) + (nop) + (if + (i32.const 1) + (drop + (i32.const 1) + ) + ) + (nop) + (nop) + (nop) + (set_local $0 + (i32.const 2) + ) + (nop) + (if + (i32.const 1) + (drop + (i32.const 1) + ) + ) + (nop) + (nop) + (nop) + (drop + (i32.const 2) + ) + (nop) + ) + (func $loop-copies (; 55 ;) (type $9) (param $0 i32) (param $1 i32) + (loop $loop + (set_local $0 + (get_local $1) + ) + (set_local $1 + (get_local $0) + ) + (br_if $loop + (get_local $0) + ) + ) + ) + (func $proper-type (; 56 ;) (type $10) (result f64) + (local $0 f64) + (local $1 i32) + (drop + (select + (i32.const 0) + (i32.const 1) + (get_local $1) + ) + ) + (get_local $0) + ) ) diff --git a/test/passes/coalesce-locals.wast b/test/passes/coalesce-locals.wast index ee92bb05e..04e8e0763 100644 --- a/test/passes/coalesce-locals.wast +++ b/test/passes/coalesce-locals.wast @@ -1127,4 +1127,75 @@ ) ) ) + (func $pick + (local $x i32) + (local $y i32) + (set_local $x (get_local $y)) + (if (i32.const 1) + (set_local $x (i32.const 1)) + ) + (set_local $x (get_local $y)) + (set_local $x (get_local $y)) + ) + (func $pick-2 + (local $x i32) + (local $y i32) + (set_local $y (get_local $x)) + (if (i32.const 1) + (set_local $y (i32.const 1)) + ) + (set_local $y (get_local $x)) + (set_local $y (get_local $x)) + ) + (func $many + (local $x i32) + (local $y i32) + (local $z i32) + (local $w i32) + (set_local $y (get_local $x)) + (set_local $z (get_local $y)) + (set_local $w (get_local $z)) + (set_local $x (get_local $z)) + (if (i32.const 1) + (set_local $y (i32.const 1)) + ) + (set_local $x (get_local $z)) + (if (i32.const 1) + (set_local $y (i32.const 1)) + ) + (set_local $y (get_local $x)) + (set_local $z (get_local $y)) + (set_local $w (get_local $z)) + (set_local $z (i32.const 2)) + (set_local $x (get_local $z)) + (if (i32.const 1) + (set_local $y (i32.const 1)) + ) + (set_local $y (get_local $x)) + (set_local $z (get_local $y)) + (set_local $w (get_local $z)) + (set_local $z (i32.const 2)) + (set_local $x (get_local $w)) + ) + (func $loop-copies (param $x i32) (param $y i32) + (loop $loop + (set_local $x (get_local $y)) + (set_local $y (get_local $x)) + (br_if $loop (get_local $x)) + ) + ) + (func $proper-type (result f64) + (local $var$0 i32) + (local $var$2 f64) + (set_local $var$0 + (select + (i32.const 0) + (i32.const 1) + (get_local $var$0) + ) + ) + (tee_local $var$2 ;; the locals will be reordered, this should be the f64 + (get_local $var$2) + ) + ) ) diff --git a/test/passes/flatten_local-cse.txt b/test/passes/flatten_local-cse.txt new file mode 100644 index 000000000..defa27c92 --- /dev/null +++ b/test/passes/flatten_local-cse.txt @@ -0,0 +1,764 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32) (result i32))) + (type $4 (func (param f64 f64 i32) (result f32))) + (memory $0 100 100) + (func $basics (; 0 ;) (type $0) + (local $x i32) + (local $y i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (block + (set_local $2 + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + (drop + (get_local $2) + ) + (nop) + (set_local $3 + (get_local $2) + ) + (drop + (get_local $2) + ) + (nop) + (if + (i32.const 0) + (nop) + ) + (nop) + (set_local $4 + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + (drop + (get_local $4) + ) + (nop) + (set_local $5 + (get_local $x) + ) + (set_local $6 + (get_local $y) + ) + (set_local $7 + (i32.add + (get_local $x) + (get_local $y) + ) + ) + (drop + (get_local $7) + ) + (nop) + (set_local $8 + (get_local $x) + ) + (set_local $9 + (get_local $y) + ) + (set_local $10 + (get_local $7) + ) + (drop + (get_local $7) + ) + (nop) + (set_local $11 + (get_local $x) + ) + (set_local $12 + (get_local $y) + ) + (set_local $13 + (get_local $7) + ) + (drop + (get_local $7) + ) + (nop) + (call $basics) + (nop) + (set_local $14 + (get_local $x) + ) + (set_local $15 + (get_local $y) + ) + (set_local $16 + (get_local $7) + ) + (drop + (get_local $7) + ) + (nop) + (set_local $x + (i32.const 100) + ) + (nop) + (set_local $17 + (get_local $x) + ) + (set_local $18 + (get_local $y) + ) + (set_local $19 + (i32.add + (get_local $x) + (get_local $y) + ) + ) + (drop + (get_local $19) + ) + (nop) + ) + (nop) + ) + (func $recursive1 (; 1 ;) (type $0) + (local $x i32) + (local $y i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (block + (set_local $2 + (i32.add + (i32.const 2) + (i32.const 3) + ) + ) + (set_local $3 + (i32.add + (i32.const 1) + (get_local $2) + ) + ) + (drop + (get_local $3) + ) + (nop) + (set_local $4 + (get_local $2) + ) + (set_local $5 + (get_local $3) + ) + (drop + (get_local $3) + ) + (nop) + (set_local $6 + (get_local $2) + ) + (drop + (get_local $2) + ) + (nop) + ) + (nop) + ) + (func $recursive2 (; 2 ;) (type $0) + (local $x i32) + (local $y i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (block + (set_local $2 + (i32.add + (i32.const 2) + (i32.const 3) + ) + ) + (set_local $3 + (i32.add + (i32.const 1) + (get_local $2) + ) + ) + (drop + (get_local $3) + ) + (nop) + (set_local $4 + (get_local $2) + ) + (drop + (get_local $2) + ) + (nop) + (set_local $5 + (get_local $2) + ) + (set_local $6 + (get_local $3) + ) + (drop + (get_local $3) + ) + (nop) + ) + (nop) + ) + (func $self (; 3 ;) (type $0) + (local $x i32) + (local $y i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (block + (set_local $2 + (i32.add + (i32.const 2) + (i32.const 3) + ) + ) + (set_local $3 + (get_local $2) + ) + (set_local $4 + (i32.add + (get_local $2) + (get_local $2) + ) + ) + (drop + (get_local $4) + ) + (nop) + (set_local $5 + (get_local $2) + ) + (drop + (get_local $2) + ) + (nop) + ) + (nop) + ) + (func $loads (; 4 ;) (type $0) + (local $0 i32) + (local $1 i32) + (block + (set_local $0 + (i32.load + (i32.const 10) + ) + ) + (drop + (get_local $0) + ) + (nop) + (set_local $1 + (i32.load + (i32.const 10) + ) + ) + (drop + (get_local $1) + ) + (nop) + ) + (nop) + ) + (func $8 (; 5 ;) (type $1) (param $var$0 i32) (result i32) + (local $var$1 i32) + (local $var$2 i32) + (local $var$3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (block $label$0 + (set_local $4 + (get_local $var$1) + ) + (set_local $5 + (i32.add + (get_local $var$1) + (i32.const 4) + ) + ) + (set_local $var$2 + (get_local $5) + ) + (set_local $6 + (get_local $var$2) + ) + (set_local $7 + (get_local $var$2) + ) + (set_local $8 + (i32.load + (get_local $var$2) + ) + ) + (set_local $var$2 + (i32.const 74) + ) + (set_local $9 + (get_local $var$2) + ) + (set_local $10 + (i32.xor + (get_local $var$2) + (i32.const -1) + ) + ) + (set_local $11 + (i32.and + (get_local $8) + (get_local $10) + ) + ) + (i32.store + (get_local $5) + (get_local $11) + ) + (nop) + (set_local $12 + (get_local $var$1) + ) + (set_local $13 + (get_local $5) + ) + (set_local $var$1 + (get_local $5) + ) + (set_local $14 + (get_local $var$1) + ) + (set_local $15 + (get_local $var$1) + ) + (set_local $16 + (i32.load + (get_local $var$1) + ) + ) + (set_local $17 + (get_local $var$2) + ) + (set_local $18 + (i32.and + (get_local $var$2) + (i32.const 8) + ) + ) + (set_local $19 + (i32.or + (get_local $16) + (get_local $18) + ) + ) + (i32.store + (get_local $var$1) + (get_local $19) + ) + (nop) + (set_local $20 + (i32.const 0) + ) + ) + (set_local $21 + (get_local $20) + ) + (return + (get_local $20) + ) + ) + (func $loop1 (; 6 ;) (type $2) (param $x i32) (param $y i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (block + (set_local $2 + (get_local $y) + ) + (set_local $x + (get_local $y) + ) + (nop) + (set_local $3 + (get_local $x) + ) + (set_local $y + (get_local $x) + ) + (nop) + (set_local $4 + (get_local $x) + ) + (set_local $x + (get_local $x) + ) + (nop) + (set_local $5 + (get_local $x) + ) + (set_local $y + (get_local $x) + ) + (nop) + (set_local $6 + (get_local $x) + ) + (return + (get_local $x) + ) + (unreachable) + ) + (set_local $8 + (get_local $7) + ) + (return + (get_local $7) + ) + ) + (func $loop2 (; 7 ;) (type $3) (param $x i32) (param $y i32) (param $z i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (block + (set_local $3 + (get_local $y) + ) + (set_local $x + (get_local $y) + ) + (nop) + (set_local $4 + (get_local $z) + ) + (set_local $y + (get_local $z) + ) + (nop) + (set_local $5 + (get_local $x) + ) + (set_local $z + (get_local $x) + ) + (nop) + (set_local $6 + (get_local $y) + ) + (set_local $x + (get_local $y) + ) + (nop) + (set_local $7 + (get_local $z) + ) + (set_local $y + (get_local $z) + ) + (nop) + (set_local $8 + (get_local $x) + ) + (set_local $z + (get_local $x) + ) + (nop) + (set_local $9 + (get_local $x) + ) + (return + (get_local $x) + ) + (unreachable) + ) + (set_local $11 + (get_local $10) + ) + (return + (get_local $10) + ) + ) + (func $loop3 (; 8 ;) (type $3) (param $x i32) (param $y i32) (param $z i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (block + (set_local $3 + (get_local $y) + ) + (set_local $x + (get_local $y) + ) + (nop) + (set_local $4 + (get_local $z) + ) + (set_local $y + (get_local $z) + ) + (nop) + (set_local $5 + (get_local $y) + ) + (set_local $z + (get_local $y) + ) + (nop) + (set_local $6 + (get_local $y) + ) + (set_local $y + (get_local $y) + ) + (nop) + (set_local $7 + (get_local $y) + ) + (set_local $z + (get_local $y) + ) + (nop) + (set_local $8 + (get_local $y) + ) + (return + (get_local $y) + ) + (unreachable) + ) + (set_local $10 + (get_local $9) + ) + (return + (get_local $9) + ) + ) + (func $handle-removing (; 9 ;) (type $4) (param $var$0 f64) (param $var$1 f64) (param $var$2 i32) (result f32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f32) + (local $7 f32) + (block + (set_local $var$2 + (i32.const 32767) + ) + (set_local $3 + (get_local $var$2) + ) + (set_local $var$2 + (i32.const 1024) + ) + (set_local $4 + (get_local $var$2) + ) + (set_local $5 + (select + (get_local $3) + (get_local $var$2) + (i32.const -2147483648) + ) + ) + (set_local $var$2 + (get_local $5) + ) + (nop) + (set_local $6 + (f32.const 1) + ) + ) + (set_local $7 + (get_local $6) + ) + (return + (get_local $6) + ) + ) +) +(module + (type $0 (func)) + (type $1 (func (param i32 f64) (result i32))) + (type $2 (func (param i64 f32 i32))) + (global $global$0 (mut i32) (i32.const 10)) + (table 23 23 anyfunc) + (export "func_1_invoker" (func $1)) + (export "func_6" (func $2)) + (func $0 (; 0 ;) (type $2) (param $var$0 i64) (param $var$1 f32) (param $var$2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (block + (block $label$1 + (set_local $3 + (i32.const 128) + ) + (br_if $label$1 + (i32.const 0) + ) + (set_local $4 + (get_local $3) + ) + (set_local $3 + (i32.const 0) + ) + (br_if $label$1 + (get_local $4) + ) + (set_local $5 + (get_local $3) + ) + (drop + (get_local $3) + ) + (nop) + (set_local $3 + (i32.const -14051) + ) + ) + (set_local $6 + (get_local $3) + ) + (if + (get_local $3) + (block + (set_global $global$0 + (i32.const 0) + ) + (nop) + ) + ) + ) + (nop) + ) + (func $1 (; 1 ;) (type $0) + (call $0 + (i64.const 1125899906842624) + (f32.const -nan:0x7fc91a) + (i32.const -46) + ) + (nop) + ) + (func $2 (; 2 ;) (type $1) (param $var$0 i32) (param $var$1 f64) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (block + (block + (set_local $2 + (get_global $global$0) + ) + (if + (get_local $2) + (block + (unreachable) + (unreachable) + ) + ) + ) + (nop) + (set_local $3 + (i32.const 0) + ) + ) + (set_local $4 + (get_local $3) + ) + (return + (get_local $3) + ) + ) +) +(module + (type $FUNCSIG$vi (func (param i32))) + (import "env" "out" (func $out (param i32))) + (func $each-pass-must-clear (; 1 ;) (type $FUNCSIG$vi) (param $var$0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (block + (set_local $1 + (get_local $var$0) + ) + (set_local $2 + (i32.eqz + (get_local $var$0) + ) + ) + (call $out + (get_local $2) + ) + (nop) + (set_local $3 + (get_local $var$0) + ) + (set_local $4 + (get_local $2) + ) + (call $out + (get_local $2) + ) + (nop) + ) + (nop) + ) +) diff --git a/test/passes/local-cse.wast b/test/passes/flatten_local-cse.wast index 31b49cbb1..4a33900aa 100644 --- a/test/passes/local-cse.wast +++ b/test/passes/flatten_local-cse.wast @@ -161,4 +161,101 @@ (i32.const 0) ) ) + (func $loop1 (param $x i32) (param $y i32) (result i32) + (set_local $x (get_local $y)) + (set_local $y (get_local $x)) + (set_local $x (get_local $y)) + (set_local $y (get_local $x)) + (return (get_local $y)) + ) + (func $loop2 (param $x i32) (param $y i32) (param $z i32) (result i32) + (set_local $x (get_local $y)) + (set_local $y (get_local $z)) + (set_local $z (get_local $x)) + (set_local $x (get_local $y)) + (set_local $y (get_local $z)) + (set_local $z (get_local $x)) + (return (get_local $x)) + ) + (func $loop3 (param $x i32) (param $y i32) (param $z i32) (result i32) + (set_local $x (get_local $y)) + (set_local $y (get_local $z)) + (set_local $z (get_local $y)) + (set_local $y (get_local $z)) + (set_local $z (get_local $y)) + (return (get_local $y)) + ) + (func $handle-removing (param $var$0 f64) (param $var$1 f64) (param $var$2 i32) (result f32) + (set_local $var$2 + (select + (tee_local $var$2 + (i32.const 32767) + ) + (tee_local $var$2 + (i32.const 1024) + ) + (i32.const -2147483648) + ) + ) + (f32.const 1) + ) +) +;; a testcase that fails if we don't handle equivalent local canonicalization properly +(module + (type $0 (func)) + (type $1 (func (param i32 f64) (result i32))) + (type $2 (func (param i64 f32 i32))) + (global $global$0 (mut i32) (i32.const 10)) + (table 23 23 anyfunc) + (export "func_1_invoker" (func $1)) + (export "func_6" (func $2)) + (func $0 (; 0 ;) (type $2) (param $var$0 i64) (param $var$1 f32) (param $var$2 i32) + (if + (block $label$1 (result i32) + (drop + (br_if $label$1 + (i32.const 0) + (br_if $label$1 + (i32.const 128) + (i32.const 0) + ) + ) + ) + (i32.const -14051) + ) + (set_global $global$0 + (i32.const 0) + ) + ) + ) + (func $1 (; 1 ;) (type $0) + (call $0 + (i64.const 1125899906842624) + (f32.const -nan:0x7fc91a) + (i32.const -46) + ) + ) + (func $2 (; 2 ;) (type $1) (param $var$0 i32) (param $var$1 f64) (result i32) + (if + (get_global $global$0) + (unreachable) + ) + (i32.const 0) + ) +) +(module + (import "env" "out" (func $out (param i32))) + (func $each-pass-must-clear (param $var$0 i32) + (call $out + (i32.eqz + (get_local $var$0) + ) + ) + (call $out + (i32.eqz + (get_local $var$0) + ) + ) + ) ) + diff --git a/test/passes/flatten_local-cse_Os.txt b/test/passes/flatten_local-cse_Os.txt new file mode 100644 index 000000000..85bc4d6f5 --- /dev/null +++ b/test/passes/flatten_local-cse_Os.txt @@ -0,0 +1,27 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (export "div16_internal" (func $0)) + (func $0 (; 0 ;) (type $0) (param $0 i32) (param $1 i32) (result i32) + (i32.add + (tee_local $0 + (i32.xor + (i32.shr_s + (i32.shl + (get_local $0) + (i32.const 16) + ) + (i32.const 16) + ) + (i32.shr_s + (i32.shl + (get_local $1) + (i32.const 16) + ) + (i32.const 16) + ) + ) + ) + (get_local $0) + ) + ) +) diff --git a/test/passes/flatten_local-cse_Os.wast b/test/passes/flatten_local-cse_Os.wast new file mode 100644 index 000000000..bc981b1b9 --- /dev/null +++ b/test/passes/flatten_local-cse_Os.wast @@ -0,0 +1,39 @@ +(module + ;; testcase from AssemblyScript + (func "div16_internal" (param $0 i32) (param $1 i32) (result i32) + (i32.add + (i32.xor + (i32.shr_s + (i32.shl + (get_local $0) + (i32.const 16) + ) + (i32.const 16) + ) + (i32.shr_s + (i32.shl + (get_local $1) + (i32.const 16) + ) + (i32.const 16) + ) + ) + (i32.xor + (i32.shr_s + (i32.shl + (get_local $0) + (i32.const 16) + ) + (i32.const 16) + ) + (i32.shr_s + (i32.shl + (get_local $1) + (i32.const 16) + ) + (i32.const 16) + ) + ) + ) + ) +) diff --git a/test/passes/local-cse.txt b/test/passes/local-cse.txt deleted file mode 100644 index c15b1a95c..000000000 --- a/test/passes/local-cse.txt +++ /dev/null @@ -1,184 +0,0 @@ -(module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) - (memory $0 100 100) - (func $basics (; 0 ;) (type $0) - (local $x i32) - (local $y i32) - (local $2 i32) - (local $3 i32) - (drop - (tee_local $2 - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (drop - (get_local $2) - ) - (if - (i32.const 0) - (nop) - ) - (drop - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - (drop - (tee_local $3 - (i32.add - (get_local $x) - (get_local $y) - ) - ) - ) - (drop - (get_local $3) - ) - (drop - (get_local $3) - ) - (call $basics) - (drop - (get_local $3) - ) - (set_local $x - (i32.const 100) - ) - (drop - (i32.add - (get_local $x) - (get_local $y) - ) - ) - ) - (func $recursive1 (; 1 ;) (type $0) - (local $x i32) - (local $y i32) - (local $2 i32) - (drop - (i32.add - (i32.const 1) - (tee_local $2 - (i32.add - (i32.const 2) - (i32.const 3) - ) - ) - ) - ) - (drop - (i32.add - (i32.const 1) - (get_local $2) - ) - ) - (drop - (get_local $2) - ) - ) - (func $recursive2 (; 2 ;) (type $0) - (local $x i32) - (local $y i32) - (local $2 i32) - (drop - (i32.add - (i32.const 1) - (tee_local $2 - (i32.add - (i32.const 2) - (i32.const 3) - ) - ) - ) - ) - (drop - (get_local $2) - ) - (drop - (i32.add - (i32.const 1) - (get_local $2) - ) - ) - ) - (func $self (; 3 ;) (type $0) - (local $x i32) - (local $y i32) - (local $2 i32) - (drop - (i32.add - (tee_local $2 - (i32.add - (i32.const 2) - (i32.const 3) - ) - ) - (get_local $2) - ) - ) - (drop - (get_local $2) - ) - ) - (func $loads (; 4 ;) (type $0) - (drop - (i32.load - (i32.const 10) - ) - ) - (drop - (i32.load - (i32.const 10) - ) - ) - ) - (func $8 (; 5 ;) (type $1) (param $var$0 i32) (result i32) - (local $var$1 i32) - (local $var$2 i32) - (local $var$3 i32) - (local $4 i32) - (block $label$0 (result i32) - (i32.store - (tee_local $var$2 - (tee_local $4 - (i32.add - (get_local $var$1) - (i32.const 4) - ) - ) - ) - (i32.and - (i32.load - (get_local $var$2) - ) - (i32.xor - (tee_local $var$2 - (i32.const 74) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (tee_local $var$1 - (get_local $4) - ) - (i32.or - (i32.load - (get_local $var$1) - ) - (i32.and - (get_local $var$2) - (i32.const 8) - ) - ) - ) - (i32.const 0) - ) - ) -) diff --git a/test/passes/local-cse_ignore-implicit-traps.txt b/test/passes/local-cse_ignore-implicit-traps.txt deleted file mode 100644 index 8d5720143..000000000 --- a/test/passes/local-cse_ignore-implicit-traps.txt +++ /dev/null @@ -1,30 +0,0 @@ -(module - (type $0 (func)) - (memory $0 100 100) - (func $loads (; 0 ;) (type $0) - (local $0 i32) - (drop - (tee_local $0 - (i32.load - (i32.const 10) - ) - ) - ) - (drop - (get_local $0) - ) - (drop - (i32.load offset=5 - (i32.const 10) - ) - ) - (drop - (i32.load - (i32.const 11) - ) - ) - (drop - (get_local $0) - ) - ) -) diff --git a/test/passes/local-cse_ignore-implicit-traps.wast b/test/passes/local-cse_ignore-implicit-traps.wast deleted file mode 100644 index 0f22084c6..000000000 --- a/test/passes/local-cse_ignore-implicit-traps.wast +++ /dev/null @@ -1,20 +0,0 @@ -(module - (memory 100 100) - (func $loads - (drop - (i32.load (i32.const 10)) - ) - (drop - (i32.load (i32.const 10)) - ) - (drop - (i32.load offset=5 (i32.const 10)) - ) - (drop - (i32.load (i32.const 11)) - ) - (drop - (i32.load (i32.const 10)) - ) - ) -) diff --git a/test/passes/simplify-locals.wast b/test/passes/simplify-locals.wast index 70eb79faa..60531717c 100644 --- a/test/passes/simplify-locals.wast +++ b/test/passes/simplify-locals.wast @@ -1129,7 +1129,6 @@ ) (i32.const 0) ) - (func $pick (local $x i32) (local $y i32) |