summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/lit/passes/vacuum_all-features.wast (renamed from test/passes/vacuum_all-features.wast)458
-rw-r--r--test/passes/vacuum_all-features.txt452
2 files changed, 458 insertions, 452 deletions
diff --git a/test/passes/vacuum_all-features.wast b/test/lit/passes/vacuum_all-features.wast
index c3643e420..36074af30 100644
--- a/test/passes/vacuum_all-features.wast
+++ b/test/lit/passes/vacuum_all-features.wast
@@ -1,12 +1,35 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
+;; NOTE: This test was ported using port_passes_tests_to_lit.py and could be cleaned up.
+
+;; RUN: foreach %s %t wasm-opt --vacuum --all-features -S -o - | filecheck %s
+
(module
(memory 256 256)
+ ;; CHECK: (type $0 (func))
(type $0 (func))
+ ;; CHECK: (type $3 (func (result i32)))
+
+ ;; CHECK: (type $1 (func (param i32)))
(type $1 (func (param i32)))
+ ;; CHECK: (type $2 (func (result f32)))
(type $2 (func (result f32)))
(type $3 (func (result i32)))
+ ;; CHECK: (type $4 (func (param i32 f64 i32 i32)))
(type $4 (func (param i32 f64 i32 i32)))
(import $int "env" "int" (result i32))
+ ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32)))
+
+ ;; CHECK: (type $none_=>_f64 (func (result f64)))
+
+ ;; CHECK: (import "env" "int" (func $int (result i32)))
+
+ ;; CHECK: (global $Int i32 (i32.const 0))
(global $Int i32 (i32.const 0))
+ ;; CHECK: (memory $0 256 256)
+
+ ;; CHECK: (func $b (type $0)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $b (type $0)
(drop
(i32.const 50)
@@ -64,6 +87,20 @@
(nop)
)
)
+ ;; CHECK: (func $l (type $3) (result i32)
+ ;; CHECK-NEXT: (local $x i32)
+ ;; CHECK-NEXT: (local $y i32)
+ ;; CHECK-NEXT: (local.set $x
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.set $x
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.set $x
+ ;; CHECK-NEXT: (local.get $y)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
(func $l (result i32)
(local $x i32)
(local $y i32)
@@ -101,6 +138,9 @@
)
(local.get $x)
)
+ ;; CHECK: (func $loopy (type $1) (param $0 i32)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $loopy (type $1) (param $0 i32)
(loop $loop-in1
(nop)
@@ -118,6 +158,11 @@
)
)
)
+ ;; CHECK: (func $unary (type $2) (result f32)
+ ;; CHECK-NEXT: (f32.abs
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $unary (type $2) (result f32)
(drop
(f32.abs
@@ -131,6 +176,14 @@
(f32.const 2)
)
)
+ ;; CHECK: (func $binary (type $2) (result f32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: (f32.const 3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $binary (type $2) (result f32)
(drop
(f32.add
@@ -159,6 +212,15 @@
(f32.const 6)
)
)
+ ;; CHECK: (func $select (type $3) (result i32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (select
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: (i32.const 4)
+ ;; CHECK-NEXT: (i32.const 5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $select (type $3) (result i32)
(drop
(select
@@ -218,6 +280,9 @@
(i32.const 15)
)
)
+ ;; CHECK: (func $block-to-one (type $0)
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: )
(func $block-to-one (type $0)
(block $block0
(nop)
@@ -240,6 +305,9 @@
(unreachable)
)
)
+ ;; CHECK: (func $recurse (type $0)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $recurse (type $0)
(nop)
(drop
@@ -258,6 +326,9 @@
)
)
)
+ ;; CHECK: (func $func-block (type $0)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $func-block (type $0)
(drop
(f32.abs
@@ -275,6 +346,28 @@
)
)
)
+ ;; CHECK: (func $Gu (type $4) (param $b i32) (param $e f64) (param $l i32) (param $d i32)
+ ;; CHECK-NEXT: (if
+ ;; CHECK-NEXT: (if (result i32)
+ ;; CHECK-NEXT: (local.get $d)
+ ;; CHECK-NEXT: (f64.ne
+ ;; CHECK-NEXT: (f64.promote_f32
+ ;; CHECK-NEXT: (f32.load
+ ;; CHECK-NEXT: (local.tee $l
+ ;; CHECK-NEXT: (i32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (i32.const 60)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.get $e)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $Gu (type $4) (param $b i32) (param $e f64) (param $l i32) (param $d i32)
(if
(if (result i32)
@@ -300,6 +393,25 @@
(unreachable)
)
)
+ ;; CHECK: (func $if-drop (type $3) (result i32)
+ ;; CHECK-NEXT: (block $out
+ ;; CHECK-NEXT: (if
+ ;; CHECK-NEXT: (call $if-drop)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (call $int)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (br $out)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (if
+ ;; CHECK-NEXT: (call $if-drop)
+ ;; CHECK-NEXT: (br $out)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (call $int)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.const 1)
+ ;; CHECK-NEXT: )
(func $if-drop (result i32)
(block $out
(drop
@@ -319,6 +431,25 @@
)
(i32.const 1)
)
+ ;; CHECK: (func $drop-silly (type $0)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (call $int)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (call $int)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (call $int)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (call $int)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (call $int)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $drop-silly
(drop
(i32.eqz
@@ -359,6 +490,9 @@
)
)
)
+ ;; CHECK: (func $drop-get-global (type $0)
+ ;; CHECK-NEXT: (call $drop-get-global)
+ ;; CHECK-NEXT: )
(func $drop-get-global
(drop
(block (result i32)
@@ -367,6 +501,11 @@
)
)
)
+ ;; CHECK: (func $relooperJumpThreading1 (type $0)
+ ;; CHECK-NEXT: (local $$vararg_ptr5 i32)
+ ;; CHECK-NEXT: (local $$11 i32)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $relooperJumpThreading1
(local $$vararg_ptr5 i32)
(local $$11 i32)
@@ -387,6 +526,9 @@
)
)
)
+ ;; CHECK: (func $relooperJumpThreading2 (type $0)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $relooperJumpThreading2
(loop $while-in$1
(drop
@@ -401,6 +543,9 @@
)
)
)
+ ;; CHECK: (func $relooperJumpThreading3 (type $0)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $relooperJumpThreading3
(loop $while-in$1
(drop
@@ -416,6 +561,16 @@
)
)
)
+ ;; CHECK: (func $if2drops (type $3) (result i32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (if (result i32)
+ ;; CHECK-NEXT: (call $if2drops)
+ ;; CHECK-NEXT: (call $if2drops)
+ ;; CHECK-NEXT: (call $if2drops)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.const 2)
+ ;; CHECK-NEXT: )
(func $if2drops (result i32)
(if
(call $if2drops)
@@ -428,6 +583,18 @@
)
(i32.const 2)
)
+ ;; CHECK: (func $if2drops-different (type $3) (result i32)
+ ;; CHECK-NEXT: (if
+ ;; CHECK-NEXT: (call $if2drops)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (call $if2drops)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (call $unary)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.const 2)
+ ;; CHECK-NEXT: )
(func $if2drops-different (result i32)
(if
(call $if2drops)
@@ -440,12 +607,41 @@
)
(i32.const 2)
)
+ ;; CHECK: (func $if-const (type $1) (param $x i32)
+ ;; CHECK-NEXT: (call $if-const
+ ;; CHECK-NEXT: (i32.const 3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (call $if-const
+ ;; CHECK-NEXT: (i32.const 5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (call $if-const
+ ;; CHECK-NEXT: (i32.const 7)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $if-const (param $x i32)
(if (i32.const 0) (call $if-const (i32.const 1)))
(if (i32.const 2) (call $if-const (i32.const 3)))
(if (i32.const 0) (call $if-const (i32.const 4)) (call $if-const (i32.const 5)))
(if (i32.const 6) (call $if-const (i32.const 7)) (call $if-const (i32.const 8)))
)
+ ;; CHECK: (func $drop-if-both-unreachable (type $1) (param $0 i32)
+ ;; CHECK-NEXT: (block $out
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (if (result i32)
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (br $out)
+ ;; CHECK-NEXT: (br $out)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (if (result i32)
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $drop-if-both-unreachable (param $0 i32)
(block $out
(drop
@@ -464,6 +660,20 @@
)
)
)
+ ;; CHECK: (func $if-1-block (type $i32_=>_i32) (param $x i32) (result i32)
+ ;; CHECK-NEXT: (block $out
+ ;; CHECK-NEXT: (if
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (local.set $x
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (br $out)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
(func $if-1-block (param $x i32) (result i32)
(block $out
(if
@@ -483,6 +693,15 @@
)
(local.get $x)
)
+ ;; CHECK: (func $block-resize-br-gone (type $0)
+ ;; CHECK-NEXT: (block $out
+ ;; CHECK-NEXT: (block $in
+ ;; CHECK-NEXT: (call $block-resize-br-gone)
+ ;; CHECK-NEXT: (br $in)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (return)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $block-resize-br-gone
(block $out
(block $in
@@ -500,6 +719,10 @@
(return)
)
)
+ ;; CHECK: (func $block-unreachable-but-last-element-concrete (type $0)
+ ;; CHECK-NEXT: (local $2 i32)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $block-unreachable-but-last-element-concrete
(local $2 i32)
(block $label$0
@@ -511,6 +734,18 @@
)
)
)
+ ;; CHECK: (func $a (type $0)
+ ;; CHECK-NEXT: (i32.store
+ ;; CHECK-NEXT: (i32.const 1)
+ ;; CHECK-NEXT: (i32.const 2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (f64.div
+ ;; CHECK-NEXT: (f64.const -nan:0xfffffffffa361)
+ ;; CHECK-NEXT: (loop $label$1
+ ;; CHECK-NEXT: (br $label$1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $a
(block
(i32.store (i32.const 1) (i32.const 2))
@@ -522,6 +757,19 @@
)
)
)
+ ;; CHECK: (func $leave-block-even-if-br-not-taken (type $none_=>_f64) (result f64)
+ ;; CHECK-NEXT: (block $label$0 (result f64)
+ ;; CHECK-NEXT: (f64.store align=1
+ ;; CHECK-NEXT: (i32.const 879179022)
+ ;; CHECK-NEXT: (br_if $label$0
+ ;; CHECK-NEXT: (loop $label$9
+ ;; CHECK-NEXT: (br $label$9)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.const 677803374)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $leave-block-even-if-br-not-taken (result f64)
(block $label$0 (result f64)
(f64.store align=1
@@ -536,6 +784,9 @@
(f64.const 2097914503796645752267195e31)
)
)
+ ;; CHECK: (func $executed-if-in-block (type $0)
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: )
(func $executed-if-in-block
(block $label$0
(if
@@ -546,6 +797,9 @@
)
(unreachable)
)
+ ;; CHECK: (func $executed-if-in-block2 (type $0)
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: )
(func $executed-if-in-block2
(block $label$0
(if
@@ -556,6 +810,12 @@
)
(unreachable)
)
+ ;; CHECK: (func $executed-if-in-block3 (type $0)
+ ;; CHECK-NEXT: (block $label$0
+ ;; CHECK-NEXT: (br $label$0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: )
(func $executed-if-in-block3
(block $label$0
(if
@@ -566,6 +826,19 @@
)
(unreachable)
)
+ ;; CHECK: (func $load-may-have-side-effects (type $3) (result i32)
+ ;; CHECK-NEXT: (i64.ge_s
+ ;; CHECK-NEXT: (block (result i64)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.load32_s
+ ;; CHECK-NEXT: (i32.const 678585719)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.const 2912825531628789796)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $load-may-have-side-effects (result i32)
(i64.ge_s
(block (result i64)
@@ -582,6 +855,13 @@
(i64.const 0)
)
)
+ ;; CHECK: (func $unary-binary-may-trap (type $0)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.trunc_f32_u
+ ;; CHECK-NEXT: (f32.const 70847791997969805621592064)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $unary-binary-may-trap
(drop
(i64.div_s
@@ -595,6 +875,19 @@
)
)
)
+ ;; CHECK: (func $unreachable-if-with-nop-arm-that-leaves-a-concrete-value-if-nop-is-removed (type $0)
+ ;; CHECK-NEXT: (block $label$0
+ ;; CHECK-NEXT: (loop $label$1
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (br_if $label$0
+ ;; CHECK-NEXT: (loop $label$9
+ ;; CHECK-NEXT: (br $label$9)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $unreachable-if-with-nop-arm-that-leaves-a-concrete-value-if-nop-is-removed
(block $label$0
(loop $label$1
@@ -612,6 +905,13 @@
)
)
)
+ ;; CHECK: (func $if-arm-vanishes (type $3) (result i32)
+ ;; CHECK-NEXT: (block $label$0 (result i32)
+ ;; CHECK-NEXT: (br $label$0
+ ;; CHECK-NEXT: (i32.const 1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $if-arm-vanishes (result i32)
(block $label$0 (result i32)
(block $label$1
@@ -625,6 +925,13 @@
(i32.const 1579493952)
)
)
+ ;; CHECK: (func $if-arm-vanishes-2 (type $3) (result i32)
+ ;; CHECK-NEXT: (block $label$0 (result i32)
+ ;; CHECK-NEXT: (br $label$0
+ ;; CHECK-NEXT: (i32.const 1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $if-arm-vanishes-2 (result i32)
(block $label$0 (result i32)
(block $label$1
@@ -638,6 +945,10 @@
(i32.const 1579493952)
)
)
+ ;; CHECK: (func $nop-if-type-changes (type $0)
+ ;; CHECK-NEXT: (local $0 i32)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $nop-if-type-changes (type $0)
(local $0 i32)
(block $label$0
@@ -663,11 +974,30 @@
)
)
(module ;; a child with a different type, cannot simply replace the parent with it
+ ;; CHECK: (type $0 (func (param i64)))
(type $0 (func (param i64)))
+ ;; CHECK: (type $1 (func (param f32 i32) (result i32)))
(type $1 (func (param f32 i32) (result i32)))
+ ;; CHECK: (func $0 (type $0) (param $0 i64)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $0 (; 0 ;) (type $0) (param $0 i64)
(nop)
)
+ ;; CHECK: (func $1 (type $1) (param $0 f32) (param $1 i32) (result i32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (block $label$2 (result i64)
+ ;; CHECK-NEXT: (call $0
+ ;; CHECK-NEXT: (br_if $label$2
+ ;; CHECK-NEXT: (i64.const -137438953472)
+ ;; CHECK-NEXT: (i32.const 1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: )
(func $1 (; 1 ;) (type $1) (param $0 f32) (param $1 i32) (result i32)
(drop
(block $label$1 (result i32)
@@ -689,13 +1019,37 @@
)
(module ;; vacuum away a drop on an if where both arms can be vacuumed
(memory 1 1)
+ ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32)))
+
+ ;; CHECK: (type $i32_i32_i32_=>_none (func (param i32 i32 i32)))
+
+ ;; CHECK: (global $global$1 (mut i32) (i32.const 0))
(global $global$1 (mut i32) (i32.const 0))
+ ;; CHECK: (memory $0 1 1)
+
+ ;; CHECK: (export "compress" (func $3))
+
+ ;; CHECK: (func $_deflate (type $i32_=>_i32) (param $0 i32) (result i32)
+ ;; CHECK-NEXT: (call $_deflate
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $_deflate (param i32) (result i32)
(call $_deflate (local.get $0))
)
+ ;; CHECK: (func $_deflateInit2_ (type $i32_=>_i32) (param $0 i32) (result i32)
+ ;; CHECK-NEXT: (call $_deflateInit2_
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $_deflateInit2_ (param i32) (result i32)
(call $_deflateInit2_ (local.get $0))
)
+ ;; CHECK: (func $_deflateEnd (type $i32_=>_i32) (param $0 i32) (result i32)
+ ;; CHECK-NEXT: (call $_deflateEnd
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
(func $_deflateEnd (param i32) (result i32)
(call $_deflateEnd (local.get $0))
)
@@ -798,8 +1152,106 @@
)
)
+;; CHECK: (func $3 (type $i32_i32_i32_=>_none) (param $0 i32) (param $1 i32) (param $2 i32)
+;; CHECK-NEXT: (local $3 i32)
+;; CHECK-NEXT: (local.set $3
+;; CHECK-NEXT: (global.get $global$1)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (global.set $global$1
+;; CHECK-NEXT: (i32.sub
+;; CHECK-NEXT: (global.get $global$1)
+;; CHECK-NEXT: (i32.const -64)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.store
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: (local.get $2)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.store offset=4
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: (i32.const 100000)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.store offset=12
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: (local.get $0)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.store offset=16
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: (i32.load
+;; CHECK-NEXT: (local.get $1)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.store offset=32
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: (i32.const 0)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.store offset=36
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: (i32.const 0)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.store offset=40
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: (i32.const 0)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (if
+;; CHECK-NEXT: (call $_deflateInit2_
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (block
+;; CHECK-NEXT: (global.set $global$1
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (return)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (drop
+;; CHECK-NEXT: (if (result i32)
+;; CHECK-NEXT: (i32.eq
+;; CHECK-NEXT: (local.tee $0
+;; CHECK-NEXT: (call $_deflate
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.const 1)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (block (result i32)
+;; CHECK-NEXT: (i32.store
+;; CHECK-NEXT: (local.get $1)
+;; CHECK-NEXT: (i32.load offset=20
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (local.set $0
+;; CHECK-NEXT: (call $_deflateEnd
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (global.set $global$1
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.const 0)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (block (result i32)
+;; CHECK-NEXT: (drop
+;; CHECK-NEXT: (call $_deflateEnd
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (global.set $global$1
+;; CHECK-NEXT: (local.get $3)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (i32.const 0)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
(module
(type $A (struct (field (mut i32))))
+ ;; CHECK: (type $none_=>_none (func))
+
+ ;; CHECK: (func $foo (type $none_=>_none)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $foo
(drop
(block (result structref)
@@ -813,7 +1265,13 @@
)
)
(module
+ ;; CHECK: (type $none_=>_none (func))
+
+ ;; CHECK: (global $global$0 (mut i32) (i32.const 10))
(global $global$0 (mut i32) (i32.const 10))
+ ;; CHECK: (func $1 (type $none_=>_none)
+ ;; CHECK-NEXT: (nop)
+ ;; CHECK-NEXT: )
(func $1
(drop
(block $block (result funcref i32)
diff --git a/test/passes/vacuum_all-features.txt b/test/passes/vacuum_all-features.txt
deleted file mode 100644
index b4e4aea72..000000000
--- a/test/passes/vacuum_all-features.txt
+++ /dev/null
@@ -1,452 +0,0 @@
-(module
- (type $0 (func))
- (type $3 (func (result i32)))
- (type $1 (func (param i32)))
- (type $2 (func (result f32)))
- (type $4 (func (param i32 f64 i32 i32)))
- (type $i32_=>_i32 (func (param i32) (result i32)))
- (type $none_=>_f64 (func (result f64)))
- (import "env" "int" (func $int (result i32)))
- (global $Int i32 (i32.const 0))
- (memory $0 256 256)
- (func $b (type $0)
- (nop)
- )
- (func $l (type $3) (result i32)
- (local $x i32)
- (local $y i32)
- (local.set $x
- (local.get $x)
- )
- (local.set $x
- (local.get $x)
- )
- (local.set $x
- (local.get $y)
- )
- (local.get $x)
- )
- (func $loopy (type $1) (param $0 i32)
- (nop)
- )
- (func $unary (type $2) (result f32)
- (f32.abs
- (unreachable)
- )
- )
- (func $binary (type $2) (result f32)
- (drop
- (f32.add
- (unreachable)
- (f32.const 3)
- )
- )
- )
- (func $select (type $3) (result i32)
- (drop
- (select
- (unreachable)
- (i32.const 4)
- (i32.const 5)
- )
- )
- )
- (func $block-to-one (type $0)
- (unreachable)
- )
- (func $recurse (type $0)
- (nop)
- )
- (func $func-block (type $0)
- (nop)
- )
- (func $Gu (type $4) (param $b i32) (param $e f64) (param $l i32) (param $d i32)
- (if
- (if (result i32)
- (local.get $d)
- (f64.ne
- (f64.promote_f32
- (f32.load
- (local.tee $l
- (i32.add
- (local.get $b)
- (i32.const 60)
- )
- )
- )
- )
- (local.get $e)
- )
- (i32.const 0)
- )
- (unreachable)
- )
- )
- (func $if-drop (type $3) (result i32)
- (block $out
- (if
- (call $if-drop)
- (drop
- (call $int)
- )
- (br $out)
- )
- (if
- (call $if-drop)
- (br $out)
- (drop
- (call $int)
- )
- )
- )
- (i32.const 1)
- )
- (func $drop-silly (type $0)
- (drop
- (call $int)
- )
- (drop
- (call $int)
- )
- (drop
- (call $int)
- )
- (block
- (drop
- (call $int)
- )
- (drop
- (call $int)
- )
- )
- )
- (func $drop-get-global (type $0)
- (call $drop-get-global)
- )
- (func $relooperJumpThreading1 (type $0)
- (local $$vararg_ptr5 i32)
- (local $$11 i32)
- (nop)
- )
- (func $relooperJumpThreading2 (type $0)
- (nop)
- )
- (func $relooperJumpThreading3 (type $0)
- (nop)
- )
- (func $if2drops (type $3) (result i32)
- (drop
- (if (result i32)
- (call $if2drops)
- (call $if2drops)
- (call $if2drops)
- )
- )
- (i32.const 2)
- )
- (func $if2drops-different (type $3) (result i32)
- (if
- (call $if2drops)
- (drop
- (call $if2drops)
- )
- (drop
- (call $unary)
- )
- )
- (i32.const 2)
- )
- (func $if-const (type $1) (param $x i32)
- (call $if-const
- (i32.const 3)
- )
- (call $if-const
- (i32.const 5)
- )
- (call $if-const
- (i32.const 7)
- )
- )
- (func $drop-if-both-unreachable (type $1) (param $0 i32)
- (block $out
- (drop
- (if (result i32)
- (local.get $0)
- (br $out)
- (br $out)
- )
- )
- )
- (drop
- (if (result i32)
- (local.get $0)
- (unreachable)
- (unreachable)
- )
- )
- )
- (func $if-1-block (type $i32_=>_i32) (param $x i32) (result i32)
- (block $out
- (if
- (local.get $x)
- (block
- (local.set $x
- (local.get $x)
- )
- (br $out)
- )
- )
- )
- (local.get $x)
- )
- (func $block-resize-br-gone (type $0)
- (block $out
- (block $in
- (call $block-resize-br-gone)
- (br $in)
- )
- (return)
- )
- )
- (func $block-unreachable-but-last-element-concrete (type $0)
- (local $2 i32)
- (nop)
- )
- (func $a (type $0)
- (i32.store
- (i32.const 1)
- (i32.const 2)
- )
- (f64.div
- (f64.const -nan:0xfffffffffa361)
- (loop $label$1
- (br $label$1)
- )
- )
- )
- (func $leave-block-even-if-br-not-taken (type $none_=>_f64) (result f64)
- (block $label$0 (result f64)
- (f64.store align=1
- (i32.const 879179022)
- (br_if $label$0
- (loop $label$9
- (br $label$9)
- )
- (i32.const 677803374)
- )
- )
- )
- )
- (func $executed-if-in-block (type $0)
- (unreachable)
- )
- (func $executed-if-in-block2 (type $0)
- (unreachable)
- )
- (func $executed-if-in-block3 (type $0)
- (block $label$0
- (br $label$0)
- )
- (unreachable)
- )
- (func $load-may-have-side-effects (type $3) (result i32)
- (i64.ge_s
- (block (result i64)
- (drop
- (i64.load32_s
- (i32.const 678585719)
- )
- )
- (i64.const 2912825531628789796)
- )
- (i64.const 0)
- )
- )
- (func $unary-binary-may-trap (type $0)
- (drop
- (i64.trunc_f32_u
- (f32.const 70847791997969805621592064)
- )
- )
- )
- (func $unreachable-if-with-nop-arm-that-leaves-a-concrete-value-if-nop-is-removed (type $0)
- (block $label$0
- (loop $label$1
- (drop
- (br_if $label$0
- (loop $label$9
- (br $label$9)
- )
- )
- )
- )
- )
- )
- (func $if-arm-vanishes (type $3) (result i32)
- (block $label$0 (result i32)
- (br $label$0
- (i32.const 1)
- )
- )
- )
- (func $if-arm-vanishes-2 (type $3) (result i32)
- (block $label$0 (result i32)
- (br $label$0
- (i32.const 1)
- )
- )
- )
- (func $nop-if-type-changes (type $0)
- (local $0 i32)
- (nop)
- )
-)
-(module
- (type $0 (func (param i64)))
- (type $1 (func (param f32 i32) (result i32)))
- (func $0 (type $0) (param $0 i64)
- (nop)
- )
- (func $1 (type $1) (param $0 f32) (param $1 i32) (result i32)
- (drop
- (block $label$2 (result i64)
- (call $0
- (br_if $label$2
- (i64.const -137438953472)
- (i32.const 1)
- )
- )
- (unreachable)
- )
- )
- (unreachable)
- )
-)
-(module
- (type $i32_=>_i32 (func (param i32) (result i32)))
- (type $i32_i32_i32_=>_none (func (param i32 i32 i32)))
- (global $global$1 (mut i32) (i32.const 0))
- (memory $0 1 1)
- (export "compress" (func $3))
- (func $_deflate (type $i32_=>_i32) (param $0 i32) (result i32)
- (call $_deflate
- (local.get $0)
- )
- )
- (func $_deflateInit2_ (type $i32_=>_i32) (param $0 i32) (result i32)
- (call $_deflateInit2_
- (local.get $0)
- )
- )
- (func $_deflateEnd (type $i32_=>_i32) (param $0 i32) (result i32)
- (call $_deflateEnd
- (local.get $0)
- )
- )
- (func $3 (type $i32_i32_i32_=>_none) (param $0 i32) (param $1 i32) (param $2 i32)
- (local $3 i32)
- (local.set $3
- (global.get $global$1)
- )
- (global.set $global$1
- (i32.sub
- (global.get $global$1)
- (i32.const -64)
- )
- )
- (i32.store
- (local.get $3)
- (local.get $2)
- )
- (i32.store offset=4
- (local.get $3)
- (i32.const 100000)
- )
- (i32.store offset=12
- (local.get $3)
- (local.get $0)
- )
- (i32.store offset=16
- (local.get $3)
- (i32.load
- (local.get $1)
- )
- )
- (i32.store offset=32
- (local.get $3)
- (i32.const 0)
- )
- (i32.store offset=36
- (local.get $3)
- (i32.const 0)
- )
- (i32.store offset=40
- (local.get $3)
- (i32.const 0)
- )
- (if
- (call $_deflateInit2_
- (local.get $3)
- )
- (block
- (global.set $global$1
- (local.get $3)
- )
- (return)
- )
- )
- (drop
- (if (result i32)
- (i32.eq
- (local.tee $0
- (call $_deflate
- (local.get $3)
- )
- )
- (i32.const 1)
- )
- (block (result i32)
- (i32.store
- (local.get $1)
- (i32.load offset=20
- (local.get $3)
- )
- )
- (local.set $0
- (call $_deflateEnd
- (local.get $3)
- )
- )
- (global.set $global$1
- (local.get $3)
- )
- (i32.const 0)
- )
- (block (result i32)
- (drop
- (call $_deflateEnd
- (local.get $3)
- )
- )
- (global.set $global$1
- (local.get $3)
- )
- (i32.const 0)
- )
- )
- )
- )
-)
-(module
- (type $none_=>_none (func))
- (func $foo (type $none_=>_none)
- (nop)
- )
-)
-(module
- (type $none_=>_none (func))
- (global $global$0 (mut i32) (i32.const 10))
- (func $1 (type $none_=>_none)
- (nop)
- )
-)