diff options
author | Thomas Lively <tlively@google.com> | 2023-09-11 19:47:08 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-12 00:47:08 +0000 |
commit | 592f6ccba11e0d9b74d9fb6965eae17c76aa45b8 (patch) | |
tree | 3ef82e0feab0539980b61a709abf660d02f16c19 | |
parent | e9d0fb7251dd6dd3d629fe6c389490a0a0e92c24 (diff) | |
download | binaryen-592f6ccba11e0d9b74d9fb6965eae17c76aa45b8.tar.gz binaryen-592f6ccba11e0d9b74d9fb6965eae17c76aa45b8.tar.bz2 binaryen-592f6ccba11e0d9b74d9fb6965eae17c76aa45b8.zip |
Remove legacy GC text syntax (#5929)
Remove the old forms of ref.test and ref.cast that took heap types instead of
ref types and remove the old array.init_static name for array.new_fixed.
-rwxr-xr-x | scripts/gen-s-parser.py | 1 | ||||
-rw-r--r-- | src/gen-s-parser.inc | 10 | ||||
-rw-r--r-- | src/wasm/wasm-s-parser.cpp | 38 | ||||
-rw-r--r-- | test/lit/array-init-static.wast | 29 | ||||
-rw-r--r-- | test/lit/passes/remove-unused-brs-gc.wast | 4 | ||||
-rw-r--r-- | test/lit/ref_cast_test.wast | 173 |
6 files changed, 6 insertions, 249 deletions
diff --git a/scripts/gen-s-parser.py b/scripts/gen-s-parser.py index 7e8a5b830..715a23d82 100755 --- a/scripts/gen-s-parser.py +++ b/scripts/gen-s-parser.py @@ -583,7 +583,6 @@ instructions = [ ("array.new_default", "makeArrayNew(s, true)"), ("array.new_data", "makeArrayNewData(s)"), ("array.new_elem", "makeArrayNewElem(s)"), - ("array.init_static", "makeArrayNewFixed(s)"), # deprecated ("array.new_fixed", "makeArrayNewFixed(s)"), ("array.get", "makeArrayGet(s)"), ("array.get_s", "makeArrayGet(s, true)"), diff --git a/src/gen-s-parser.inc b/src/gen-s-parser.inc index 14386334e..57fd2ffed 100644 --- a/src/gen-s-parser.inc +++ b/src/gen-s-parser.inc @@ -46,9 +46,6 @@ switch (buf[0]) { case 'e': if (op == "array.init_elem"sv) { return makeArrayInitElem(s); } goto parse_error; - case 's': - if (op == "array.init_static"sv) { return makeArrayNewFixed(s); } - goto parse_error; default: goto parse_error; } } @@ -3650,13 +3647,6 @@ switch (buf[0]) { return *ret; } goto parse_error; - case 's': - if (op == "array.init_static"sv) { - auto ret = makeArrayNewFixed(ctx, pos); - CHECK_ERR(ret); - return *ret; - } - goto parse_error; default: goto parse_error; } } diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp index e30901c5b..d4dd99c2c 100644 --- a/src/wasm/wasm-s-parser.cpp +++ b/src/wasm/wasm-s-parser.cpp @@ -2854,44 +2854,14 @@ Expression* SExpressionWasmBuilder::makeI31Get(Element& s, bool signed_) { } Expression* SExpressionWasmBuilder::makeRefTest(Element& s) { - int i = 1; - Type castType; - if (s[i]->isList() || - !(s[i]->dollared() || - stringToType(s[i]->str(), true /* allowError */) == Type::none)) { - castType = elementToType(*s[i++]); - } else { - // legacy syntax - auto nullability = NonNullable; - if (s[1]->str().str == "null") { - nullability = Nullable; - ++i; - } - auto type = parseHeapType(*s[i++]); - castType = Type(type, nullability); - } - auto* ref = parseExpression(*s[i++]); + Type castType = elementToType(*s[1]); + auto* ref = parseExpression(*s[2]); return Builder(wasm).makeRefTest(ref, castType); } Expression* SExpressionWasmBuilder::makeRefCast(Element& s) { - int i = 1; - Type castType; - if (s[i]->isList() || - !(s[i]->dollared() || - stringToType(s[i]->str(), true /* allowError */) == Type::none)) { - castType = elementToType(*s[i++]); - } else { - // legacy syntax - Nullability nullability = NonNullable; - if (s[i]->str().str == "null") { - nullability = Nullable; - ++i; - } - auto type = parseHeapType(*s[i++]); - castType = Type(type, nullability); - } - auto* ref = parseExpression(*s[i++]); + Type castType = elementToType(*s[1]); + auto* ref = parseExpression(*s[2]); return Builder(wasm).makeRefCast(ref, castType); } diff --git a/test/lit/array-init-static.wast b/test/lit/array-init-static.wast deleted file mode 100644 index a4110509c..000000000 --- a/test/lit/array-init-static.wast +++ /dev/null @@ -1,29 +0,0 @@ -;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited. - -;; RUN: wasm-opt -all %s -S -o - | filecheck %s - -;; Check that the deprecated `array.init_static` alias for `array.new_fixed` is -;; parsed correctly. - -(module - ;; CHECK: (type $0 (func)) - - ;; CHECK: (type $array (array i32)) - (type $array (array i32)) - ;; CHECK: (func $test (type $0) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (array.new_fixed $array 2 - ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (i32.const 1) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - (func $test - (drop - (array.init_static $array - (i32.const 0) - (i32.const 1) - ) - ) - ) -) diff --git a/test/lit/passes/remove-unused-brs-gc.wast b/test/lit/passes/remove-unused-brs-gc.wast index 1bdd6f680..5b4e09a25 100644 --- a/test/lit/passes/remove-unused-brs-gc.wast +++ b/test/lit/passes/remove-unused-brs-gc.wast @@ -620,10 +620,10 @@ (drop ;; This should not crash due to the new unreachable below. (br_on_cast $outer (ref none) (ref none) - (ref.cast none + (ref.cast (ref none) ;; This will be optimized to a drop + unreachable. (br_on_cast $outer (ref none) (ref none) - (ref.cast none + (ref.cast (ref none) (local.get $0) ) ) diff --git a/test/lit/ref_cast_test.wast b/test/lit/ref_cast_test.wast deleted file mode 100644 index 0a6018fe8..000000000 --- a/test/lit/ref_cast_test.wast +++ /dev/null @@ -1,173 +0,0 @@ -;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. -;; RUN: wasm-opt -all %s -S -o - | filecheck %s - -;; Check that both the legacy and the standard syntax for ref.test and -;; ref.cast work -(module - ;; CHECK: (type $array (array i32)) - (type $array (array i32)) - ;; CHECK: (func $test (type $1) (param $0 eqref) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.cast (ref $array) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.cast (ref null $array) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.cast (ref i31) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.cast i31ref - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.cast (ref $array) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.cast (ref null $array) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.cast (ref i31) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.cast i31ref - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.test (ref $array) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.test (ref null $array) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.test (ref i31) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.test i31ref - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.test (ref $array) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.test (ref null $array) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.test (ref i31) - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (ref.test i31ref - ;; CHECK-NEXT: (local.get $0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - (func $test (param eqref) - (drop - (ref.cast $array - (local.get 0) - ) - ) - (drop - (ref.cast null $array - (local.get 0) - ) - ) - (drop - (ref.cast i31 - (local.get 0) - ) - ) - (drop - (ref.cast null i31 - (local.get 0) - ) - ) - (drop - (ref.cast (ref $array) - (local.get 0) - ) - ) - (drop - (ref.cast (ref null $array) - (local.get 0) - ) - ) - (drop - (ref.cast (ref i31) - (local.get 0) - ) - ) - (drop - (ref.cast i31ref - (local.get 0) - ) - ) - (drop - (ref.test $array - (local.get 0) - ) - ) - (drop - (ref.test null $array - (local.get 0) - ) - ) - (drop - (ref.test i31 - (local.get 0) - ) - ) - (drop - (ref.test null i31 - (local.get 0) - ) - ) - (drop - (ref.test (ref $array) - (local.get 0) - ) - ) - (drop - (ref.test (ref null $array) - (local.get 0) - ) - ) - (drop - (ref.test (ref i31) - (local.get 0) - ) - ) - (drop - (ref.test i31ref - (local.get 0) - ) - ) - ) -) |