diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/passes/simplify-locals_all-features.txt | 18 | ||||
-rw-r--r-- | test/passes/simplify-locals_all-features.wast | 20 |
2 files changed, 38 insertions, 0 deletions
diff --git a/test/passes/simplify-locals_all-features.txt b/test/passes/simplify-locals_all-features.txt index 81fca48ef..a9f056136 100644 --- a/test/passes/simplify-locals_all-features.txt +++ b/test/passes/simplify-locals_all-features.txt @@ -2040,3 +2040,21 @@ ) ) ) +(module + (type $eqref_i31ref_=>_i32 (func (param eqref i31ref) (result i32))) + (export "test" (func $0)) + (func $0 (param $0 eqref) (param $1 i31ref) (result i32) + (local $2 eqref) + (local $3 i31ref) + (local.set $2 + (local.get $0) + ) + (local.set $0 + (local.get $3) + ) + (ref.eq + (local.get $2) + (local.get $1) + ) + ) +) diff --git a/test/passes/simplify-locals_all-features.wast b/test/passes/simplify-locals_all-features.wast index 177b09688..61150edc1 100644 --- a/test/passes/simplify-locals_all-features.wast +++ b/test/passes/simplify-locals_all-features.wast @@ -1800,3 +1800,23 @@ ) ) ) +;; do not be confused by subtyping: when an index is set, even to another type, +;; it is no longer equivalent +;; (see https://github.com/WebAssembly/binaryen/issues/3266) +(module + (func "test" (param $0 eqref) (param $1 i31ref) (result i32) + (local $2 eqref) + (local $3 i31ref) + (local.set $2 + (local.get $0) ;; $0 and $2 are equivalent + ) + (local.set $0 ;; set $0 to something with another type + (local.get $3) + ) + ;; compares a null eqref and a zero i31ref - should be false + (ref.eq + (local.get $2) + (local.get $1) + ) + ) +) |