diff options
Diffstat (limited to 'test/lit/passes')
31 files changed, 97 insertions, 13 deletions
diff --git a/test/lit/passes/coalesce-locals-eh.wast b/test/lit/passes/coalesce-locals-eh.wast index d2d7136fc..20c1d3152 100644 --- a/test/lit/passes/coalesce-locals-eh.wast +++ b/test/lit/passes/coalesce-locals-eh.wast @@ -2,6 +2,7 @@ ;; RUN: wasm-opt %s --coalesce-locals -all -S -o - | filecheck %s (module + ;; CHECK: (tag $e (param)) ;; CHECK: (func $bar (result i32) ;; CHECK-NEXT: (i32.const 1984) ;; CHECK-NEXT: ) diff --git a/test/lit/passes/coalesce-locals-gc.wast b/test/lit/passes/coalesce-locals-gc.wast index 173ad02be..2c0fc3f03 100644 --- a/test/lit/passes/coalesce-locals-gc.wast +++ b/test/lit/passes/coalesce-locals-gc.wast @@ -3,7 +3,9 @@ ;; RUN: | filecheck %s (module + ;; CHECK: (type $array (array (mut i8))) (type $array (array (mut i8))) + ;; CHECK: (global $global (ref null $array) (ref.null $array)) (global $global (ref null $array) (ref.null $array)) ;; CHECK: (func $test-dead-get-non-nullable (param $0 dataref) diff --git a/test/lit/passes/code-folding-eh.wast b/test/lit/passes/code-folding-eh.wast index 9ca8f1ea7..11d518475 100644 --- a/test/lit/passes/code-folding-eh.wast +++ b/test/lit/passes/code-folding-eh.wast @@ -3,6 +3,7 @@ ;; RUN: | filecheck %s (module + ;; CHECK: (tag $e-i32 (param i32)) (tag $e-i32 (param i32)) ;; CHECK: (func $pop-test @@ -66,7 +67,11 @@ ) ) + ;; CHECK: (func $foo + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) (func $foo) + ;; CHECK: (func $try-call-optimize-terminating-tails (result i32) ;; CHECK-NEXT: (try ;; CHECK-NEXT: (do diff --git a/test/lit/passes/code-pushing-eh.wast b/test/lit/passes/code-pushing-eh.wast index f45ef5c3f..a18b10dae 100644 --- a/test/lit/passes/code-pushing-eh.wast +++ b/test/lit/passes/code-pushing-eh.wast @@ -2,6 +2,7 @@ ;; RUN: wasm-opt %s --code-pushing -all -S -o - | filecheck %s (module + ;; CHECK: (tag $e (param i32)) (tag $e (param i32)) ;; CHECK: (func $cant-push-past-call @@ -111,7 +112,11 @@ ) ) + ;; CHECK: (func $foo + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) (func $foo) + ;; CHECK: (func $cant-push-past-try ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $out diff --git a/test/lit/passes/dae-gc.wast b/test/lit/passes/dae-gc.wast index fe4b346ea..65d65d4c9 100644 --- a/test/lit/passes/dae-gc.wast +++ b/test/lit/passes/dae-gc.wast @@ -2,6 +2,7 @@ ;; RUN: wasm-opt %s -all --dae -S -o - | filecheck %s (module + ;; CHECK: (type ${} (struct )) (type ${} (struct)) ;; CHECK: (func $foo diff --git a/test/lit/passes/dce-eh.wast b/test/lit/passes/dce-eh.wast index af216765c..e2268f87b 100644 --- a/test/lit/passes/dce-eh.wast +++ b/test/lit/passes/dce-eh.wast @@ -4,9 +4,14 @@ ;; If either try body or catch body is reachable, the whole try construct is ;; reachable (module + ;; CHECK: (tag $e (param)) + ;; CHECK: (func $foo + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) (func $foo) (tag $e) + ;; CHECK: (func $try_unreachable ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do diff --git a/test/lit/passes/flatten.wast b/test/lit/passes/flatten.wast index f734996a5..e07c8fafb 100644 --- a/test/lit/passes/flatten.wast +++ b/test/lit/passes/flatten.wast @@ -2,6 +2,7 @@ ;; RUN: wasm-opt %s -all --flatten -S -o - | filecheck %s (module + ;; CHECK: (type $simplefunc (func)) (type $simplefunc (func)) ;; CHECK: (func $0 (param $0 (ref $simplefunc)) (result (ref $simplefunc)) ;; CHECK-NEXT: (local $1 (ref null $simplefunc)) diff --git a/test/lit/passes/heap2local.wast b/test/lit/passes/heap2local.wast index 9f0807b3b..efca63028 100644 --- a/test/lit/passes/heap2local.wast +++ b/test/lit/passes/heap2local.wast @@ -3,10 +3,15 @@ ;; RUN: wasm-opt %s -all --remove-unused-names --heap2local -S -o - | filecheck %s (module + ;; CHECK: (type $struct.A (struct (field (mut i32)) (field (mut f64)))) (type $struct.A (struct (field (mut i32)) (field (mut f64)))) + ;; CHECK: (type $struct.recursive (struct (field (mut (ref null $struct.recursive))))) + ;; CHECK: (type $struct.nonnullable (struct (field (ref $struct.A)))) + ;; CHECK: (type $struct.packed (struct (field (mut i8)))) (type $struct.packed (struct (field (mut i8)))) + ;; CHECK: (type $struct.nondefaultable (struct (field (rtt $struct.A)))) (type $struct.nondefaultable (struct (field (rtt $struct.A)))) (type $struct.recursive (struct (field (mut (ref null $struct.recursive))))) diff --git a/test/lit/passes/inlining-eh.wast b/test/lit/passes/inlining-eh.wast index e2b512410..5ec3c55dc 100644 --- a/test/lit/passes/inlining-eh.wast +++ b/test/lit/passes/inlining-eh.wast @@ -3,7 +3,9 @@ (module ;; --------------------------------------------------------------------------- + ;; CHECK: (import "a" "b" (func $foo (result i32))) (import "a" "b" (func $foo (result i32))) + ;; CHECK: (tag $tag$0 (param i32)) (tag $tag$0 (param i32)) (func $callee-with-label (try $label diff --git a/test/lit/passes/inlining-optimizing.wast b/test/lit/passes/inlining-optimizing.wast index bbbb385f8..31e9aaa7a 100644 --- a/test/lit/passes/inlining-optimizing.wast +++ b/test/lit/passes/inlining-optimizing.wast @@ -2,7 +2,9 @@ ;; RUN: wasm-opt %s -all --inlining-optimizing -S -o - | filecheck %s (module + ;; CHECK: (type $none_=>_none (func)) (type $none_=>_none (func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) (type $none_=>_i32 (func (result i32))) ;; CHECK: (func $0 ;; CHECK-NEXT: (nop) diff --git a/test/lit/passes/instrument-locals-eh.wast b/test/lit/passes/instrument-locals-eh.wast index a55a05416..44535b7c2 100644 --- a/test/lit/passes/instrument-locals-eh.wast +++ b/test/lit/passes/instrument-locals-eh.wast @@ -2,6 +2,7 @@ ;; RUN: wasm-opt %s --instrument-locals -all -S -o - | filecheck %s (module + ;; CHECK: (tag $e (param i32)) (tag $e (param i32)) ;; CHECK: (func $test diff --git a/test/lit/passes/opt_flatten.wast b/test/lit/passes/opt_flatten.wast index e3cf103f3..048ccd60d 100644 --- a/test/lit/passes/opt_flatten.wast +++ b/test/lit/passes/opt_flatten.wast @@ -5,6 +5,7 @@ ;; RUN: wasm-opt %s -all -O1 --flatten --rereloop -S -o - | filecheck %s (module + ;; CHECK: (export "foo" (func $foo)) (export "foo" (func $foo)) ;; CHECK: (func $foo (result funcref) ;; CHECK-NEXT: (local $0 funcref) diff --git a/test/lit/passes/optimize-instructions-atomics.wast b/test/lit/passes/optimize-instructions-atomics.wast index 83ad545ba..d029942fe 100644 --- a/test/lit/passes/optimize-instructions-atomics.wast +++ b/test/lit/passes/optimize-instructions-atomics.wast @@ -2,6 +2,7 @@ ;; RUN: wasm-opt %s --optimize-instructions --enable-threads -S -o - | filecheck %s (module + ;; CHECK: (import "env" "memory" (memory $0 (shared 256 256))) (import "env" "memory" (memory $0 (shared 256 256))) ;; CHECK: (func $x diff --git a/test/lit/passes/optimize-instructions-eh.wast b/test/lit/passes/optimize-instructions-eh.wast index 2c7f83aee..92a2dd37c 100644 --- a/test/lit/passes/optimize-instructions-eh.wast +++ b/test/lit/passes/optimize-instructions-eh.wast @@ -3,6 +3,10 @@ ;; RUN: | filecheck %s (module + ;; CHECK: (tag $e (param i32)) + ;; CHECK: (func $dummy + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) (func $dummy) (tag $e (param i32)) @@ -17,6 +21,7 @@ ;; (i32.add (local.get $x) (i32.const 7)) can be just (local.get $x) when $x ;; is guaranteed to contain a value equal to or less than 7. + ;; CHECK: (func $getFallthrough-try-no-throw ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local.set $x diff --git a/test/lit/passes/optimize-instructions-gc-iit.wast b/test/lit/passes/optimize-instructions-gc-iit.wast index 5409e14c4..c0d84ab1c 100644 --- a/test/lit/passes/optimize-instructions-gc-iit.wast +++ b/test/lit/passes/optimize-instructions-gc-iit.wast @@ -3,12 +3,19 @@ ;; RUN: | filecheck %s (module + ;; CHECK: (type $parent (struct (field i32))) (type $parent (struct (field i32))) + ;; CHECK: (type $child (struct (field i32) (field f64))) (type $child (struct (field i32) (field f64))) + ;; CHECK: (type $other (struct (field i64) (field f32))) (type $other (struct (field i64) (field f32))) + ;; CHECK: (func $foo + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) (func $foo) + ;; CHECK: (func $ref-cast-iit (param $parent (ref $parent)) (param $child (ref $child)) (param $other (ref $other)) (param $parent-rtt (rtt $parent)) (param $child-rtt (rtt $child)) (param $other-rtt (rtt $other)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result (ref $parent)) diff --git a/test/lit/passes/optimize-instructions-gc.wast b/test/lit/passes/optimize-instructions-gc.wast index c0474a823..3f8c21bfc 100644 --- a/test/lit/passes/optimize-instructions-gc.wast +++ b/test/lit/passes/optimize-instructions-gc.wast @@ -3,6 +3,9 @@ ;; RUN: | filecheck %s (module + ;; CHECK: (type $struct (struct (field $i8 (mut i8)) (field $i16 (mut i16)) (field $i32 (mut i32)) (field $i64 (mut i64)))) + ;; CHECK: (type $array (array (mut i8))) + ;; CHECK: (import "env" "get-i32" (func $get-i32 (result i32))) (import "env" "get-i32" (func $get-i32 (result i32))) (type $empty (struct)) @@ -612,8 +615,12 @@ ) ) + ;; CHECK: (func $nothing + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) (func $nothing) + ;; CHECK: (func $ref-eq-corner-cases (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.eq diff --git a/test/lit/passes/optimize-instructions-ignore-traps.wast b/test/lit/passes/optimize-instructions-ignore-traps.wast index 5c4784919..71baba86f 100644 --- a/test/lit/passes/optimize-instructions-ignore-traps.wast +++ b/test/lit/passes/optimize-instructions-ignore-traps.wast @@ -3,7 +3,9 @@ ;; RUN: | filecheck %s (module + ;; CHECK: (type $0 (func (param i32 i32) (result i32))) (type $0 (func (param i32 i32) (result i32))) + ;; CHECK: (memory $0 0) (memory $0 0) ;; CHECK: (func $conditionals (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (local $2 i32) diff --git a/test/lit/passes/optimize-instructions-typed-function-references.wast b/test/lit/passes/optimize-instructions-typed-function-references.wast index 812815c2d..418195b48 100644 --- a/test/lit/passes/optimize-instructions-typed-function-references.wast +++ b/test/lit/passes/optimize-instructions-typed-function-references.wast @@ -3,6 +3,7 @@ ;; RUN: --enable-typed-function-references -S -o - | filecheck %s (module + ;; CHECK: (type $i32-i32 (func (param i32) (result i32))) (type $i32-i32 (func (param i32) (result i32))) ;; this function has a reference parameter. we analyze parameters, and should ;; not be confused by a type that has no bit size, in particular. this test diff --git a/test/lit/passes/optimize-instructions.wast b/test/lit/passes/optimize-instructions.wast index 5b5b44b57..728081e9f 100644 --- a/test/lit/passes/optimize-instructions.wast +++ b/test/lit/passes/optimize-instructions.wast @@ -3,6 +3,7 @@ (module (memory 0) + ;; CHECK: (type $0 (func (param i32 i64))) (type $0 (func (param i32 i64))) ;; CHECK: (func $and-and (param $i1 i32) (result i32) ;; CHECK-NEXT: (i32.and diff --git a/test/lit/passes/poppify.wast b/test/lit/passes/poppify.wast index 5becc6556..61de7e5c2 100644 --- a/test/lit/passes/poppify.wast +++ b/test/lit/passes/poppify.wast @@ -3,6 +3,7 @@ ;; RUN: wasm-opt %s --poppify --no-validation -all -S -o - | filecheck %s (module + ;; CHECK: (tag $e (param i32)) (tag $e (param i32)) ;; CHECK: (func $id (param $x i32) (result i32) diff --git a/test/lit/passes/precompute-gc.wast b/test/lit/passes/precompute-gc.wast index cb6ba9bf0..b6c526e7b 100644 --- a/test/lit/passes/precompute-gc.wast +++ b/test/lit/passes/precompute-gc.wast @@ -3,7 +3,11 @@ ;; RUN: | filecheck %s (module + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) + ;; CHECK: (type $B (struct (field (mut f64)))) + ;; CHECK: (type $func-return-i32 (func (result i32))) + ;; CHECK: (type $empty (struct )) (type $empty (struct)) ;; two incompatible struct types @@ -12,6 +16,7 @@ (type $func-return-i32 (func (result i32))) + ;; CHECK: (import "fuzzing-support" "log-i32" (func $log (param i32))) (import "fuzzing-support" "log-i32" (func $log (param i32))) ;; CHECK: (func $test-fallthrough (result i32) diff --git a/test/lit/passes/remove-unused-brs.wast b/test/lit/passes/remove-unused-brs.wast index a43601654..089d82391 100644 --- a/test/lit/passes/remove-unused-brs.wast +++ b/test/lit/passes/remove-unused-brs.wast @@ -4,7 +4,9 @@ (module + ;; CHECK: (type $none_=>_i32 (func (result i32))) (type $none_=>_i32 (func (result i32))) + ;; CHECK: (type $i32_=>_none (func (param i32))) (type $i32_=>_none (func (param i32))) ;; Regression test in which we need to calculate a proper LUB. @@ -54,8 +56,12 @@ ) ) + ;; CHECK: (func $nothing + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) (func $nothing) + ;; CHECK: (func $restructure-br_if-condition-reorderable (param $x i32) (result i32) ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (block $block (result i32) diff --git a/test/lit/passes/remove-unused-names-eh.wast b/test/lit/passes/remove-unused-names-eh.wast index cf16dda0b..fcdbf0f07 100644 --- a/test/lit/passes/remove-unused-names-eh.wast +++ b/test/lit/passes/remove-unused-names-eh.wast @@ -2,6 +2,7 @@ ;; RUN: wasm-opt %s --remove-unused-names -all -S -o - | filecheck %s (module + ;; CHECK: (tag $tag$0 (param i32)) (tag $tag$0 (param i32)) ;; CHECK: (func $func0 diff --git a/test/lit/passes/roundtrip-gc-types.wast b/test/lit/passes/roundtrip-gc-types.wast index 5e7253352..85914fd79 100644 --- a/test/lit/passes/roundtrip-gc-types.wast +++ b/test/lit/passes/roundtrip-gc-types.wast @@ -1,26 +1,25 @@ +;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. ;; RUN: wasm-opt %s -all --roundtrip -S -o - | filecheck %s ;; Regression test for an issue in which roundtripping failed to reproduce the ;; original types because type canonicalization was incorrect when the canonical ;; types already existed in the store. -;; CHECK: (module -;; CHECK-NEXT: (type $A (struct (field (ref $C)))) -;; CHECK-NEXT: (type $C (struct (field (mut (ref $B))))) -;; CHECK-NEXT: (type $B (func (param (ref $A)) (result (ref $B)))) -;; CHECK-NEXT: (type $D (struct (field (ref $C)) (field (ref $A)))) -;; CHECK-NEXT: (global $g0 (rtt 0 $A) (rtt.canon $A)) -;; CHECK-NEXT: (global $g1 (rtt 1 $D) (rtt.sub $D -;; CHECK-NEXT: (global.get $g0) -;; CHECK-NEXT: )) -;; CHECK-NEXT: ) (module + ;; CHECK: (type $A (struct (field (ref $C)))) (type $A (struct (field (ref $C)))) + ;; CHECK: (type $C (struct (field (mut (ref $B))))) + ;; CHECK: (type $B (func (param (ref $A)) (result (ref $B)))) (type $B (func (param (ref $A)) (result (ref $B)))) (type $C (struct (field (mut (ref $B))))) + ;; CHECK: (type $D (struct (field (ref $C)) (field (ref $A)))) (type $D (struct (field (ref $C)) (field (ref $A)))) + ;; CHECK: (global $g0 (rtt 0 $A) (rtt.canon $A)) (global $g0 (rtt 0 $A) (rtt.canon $A)) + ;; CHECK: (global $g1 (rtt 1 $D) (rtt.sub $D + ;; CHECK-NEXT: (global.get $g0) + ;; CHECK-NEXT: )) (global $g1 (rtt 1 $D) (rtt.sub $D (global.get $g0) )) diff --git a/test/lit/passes/roundtrip.wast b/test/lit/passes/roundtrip.wast index a0288c600..3eca45655 100644 --- a/test/lit/passes/roundtrip.wast +++ b/test/lit/passes/roundtrip.wast @@ -2,6 +2,7 @@ ;; RUN: wasm-opt %s -all --roundtrip -S -o - | filecheck %s (module + ;; CHECK: (type $none (func)) (type $none (func)) ;; CHECK: (func $foo ;; CHECK-NEXT: (local $0 (funcref (ref null $none))) diff --git a/test/lit/passes/rse-eh.wast b/test/lit/passes/rse-eh.wast index 7d21ef820..e8b9570ed 100644 --- a/test/lit/passes/rse-eh.wast +++ b/test/lit/passes/rse-eh.wast @@ -2,7 +2,9 @@ ;; RUN: wasm-opt %s --rse -all -S -o - | filecheck %s (module + ;; CHECK: (tag $e (param i32)) (tag $e (param i32)) + ;; CHECK: (tag $e2 (param)) (tag $e2) ;; CHECK: (func $try1 @@ -99,7 +101,11 @@ (local.set $x (i32.const 1)) ) + ;; CHECK: (func $foo + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) (func $foo) + ;; CHECK: (func $try4 ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try diff --git a/test/lit/passes/simplify-locals-eh.wast b/test/lit/passes/simplify-locals-eh.wast index 74501584c..9eb8680b0 100644 --- a/test/lit/passes/simplify-locals-eh.wast +++ b/test/lit/passes/simplify-locals-eh.wast @@ -2,6 +2,7 @@ ;; RUN: wasm-opt %s --simplify-locals -all -S -o - | filecheck %s (module + ;; CHECK: (tag $e-i32 (param i32)) (tag $e-i32 (param i32)) ;; CHECK: (func $foo (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (nop) diff --git a/test/lit/passes/simplify-locals-gc.wast b/test/lit/passes/simplify-locals-gc.wast index 4308a25a1..06822a5d7 100644 --- a/test/lit/passes/simplify-locals-gc.wast +++ b/test/lit/passes/simplify-locals-gc.wast @@ -3,6 +3,7 @@ ;; RUN: | filecheck %s (module + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (field (mut i32)))) ;; Writes to heap objects cannot be reordered with reads. diff --git a/test/lit/passes/ssa.wast b/test/lit/passes/ssa.wast index 6be5ee11a..30640a803 100644 --- a/test/lit/passes/ssa.wast +++ b/test/lit/passes/ssa.wast @@ -2,7 +2,11 @@ ;; RUN: wasm-opt %s -all --ssa -S -o - | filecheck %s (module + ;; CHECK: (func $foo + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) (func $foo) + ;; CHECK: (func $bar (param $x (ref func)) ;; CHECK-NEXT: (local $1 funcref) ;; CHECK-NEXT: (local $2 funcref) diff --git a/test/lit/passes/stack-ir-eh.wast b/test/lit/passes/stack-ir-eh.wast index 228f00773..b9e44174d 100644 --- a/test/lit/passes/stack-ir-eh.wast +++ b/test/lit/passes/stack-ir-eh.wast @@ -1,7 +1,9 @@ -;; RUN: wasm-opt %s --generate-stack-ir --optimize-stack-ir --print-stack-ir \ -;; RUN: -all -S -o - | filecheck %s +;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. +;; RUN: wasm-opt %s --generate-stack-ir --optimize-stack-ir \ +;; RUN: -all --print-stack-ir | filecheck %s (module + ;; CHECK: (tag $e0 (param i32)) (tag $e0 (param i32)) ;; CHECK: (func $eh @@ -9,7 +11,7 @@ ;; CHECK-NEXT: i32.const 0 ;; CHECK-NEXT: throw $e0 ;; CHECK-NEXT: catch $e0 - ;; CHECK-NEXT: + ;; CHECK-NEXT: ;; CHECK-NEXT: drop ;; CHECK-NEXT: catch_all ;; CHECK-NEXT: rethrow $l0 diff --git a/test/lit/passes/vacuum-eh.wast b/test/lit/passes/vacuum-eh.wast index a4417f0ae..ef6b6ff5b 100644 --- a/test/lit/passes/vacuum-eh.wast +++ b/test/lit/passes/vacuum-eh.wast @@ -2,7 +2,9 @@ ;; RUN: wasm-opt %s --vacuum -all -S -o - | filecheck %s (module + ;; CHECK: (tag $e (param i32)) (tag $e (param i32)) + ;; CHECK: (tag $e2 (param i32)) (tag $e2 (param i32)) ;; CHECK: (func $try-test |