summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2023-09-11 19:47:08 -0500
committerGitHub <noreply@github.com>2023-09-12 00:47:08 +0000
commit592f6ccba11e0d9b74d9fb6965eae17c76aa45b8 (patch)
tree3ef82e0feab0539980b61a709abf660d02f16c19
parente9d0fb7251dd6dd3d629fe6c389490a0a0e92c24 (diff)
downloadbinaryen-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-xscripts/gen-s-parser.py1
-rw-r--r--src/gen-s-parser.inc10
-rw-r--r--src/wasm/wasm-s-parser.cpp38
-rw-r--r--test/lit/array-init-static.wast29
-rw-r--r--test/lit/passes/remove-unused-brs-gc.wast4
-rw-r--r--test/lit/ref_cast_test.wast173
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)
- )
- )
- )
-)