summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wasm/wasm-type.cpp6
-rw-r--r--src/wasm/wasm-validator.cpp6
-rw-r--r--test/passes/asyncify_enable-multivalue.txt (renamed from test/passes/asyncify.txt)0
-rw-r--r--test/passes/asyncify_enable-multivalue.wast (renamed from test/passes/asyncify.wast)0
4 files changed, 11 insertions, 1 deletions
diff --git a/src/wasm/wasm-type.cpp b/src/wasm/wasm-type.cpp
index a98d10be4..3fb783fba 100644
--- a/src/wasm/wasm-type.cpp
+++ b/src/wasm/wasm-type.cpp
@@ -198,7 +198,11 @@ Type Type::reinterpret() const {
FeatureSet Type::getFeatures() const {
FeatureSet feats = FeatureSet::MVP;
- for (Type t : expand()) {
+ const auto& elements = expand();
+ if (elements.size() > 1) {
+ feats = FeatureSet::Multivalue;
+ }
+ for (Type t : elements) {
switch (t.getSingle()) {
case Type::v128:
feats |= FeatureSet::SIMD;
diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp
index d81297408..368c01bdc 100644
--- a/src/wasm/wasm-validator.cpp
+++ b/src/wasm/wasm-validator.cpp
@@ -1906,6 +1906,9 @@ void FunctionValidator::visitBrOnExn(BrOnExn* curr) {
}
void FunctionValidator::visitTupleMake(TupleMake* curr) {
+ shouldBeTrue(getModule()->features.hasMultivalue(),
+ curr,
+ "Tuples are not allowed unless multivalue is enabled");
std::vector<Type> types;
for (auto* op : curr->operands) {
if (op->type == Type::unreachable) {
@@ -1924,6 +1927,9 @@ void FunctionValidator::visitTupleMake(TupleMake* curr) {
}
void FunctionValidator::visitTupleExtract(TupleExtract* curr) {
+ shouldBeTrue(getModule()->features.hasMultivalue(),
+ curr,
+ "Tuples are not allowed unless multivalue is enabled");
if (curr->tuple->type == Type::unreachable) {
shouldBeTrue(
curr->type == Type::unreachable,
diff --git a/test/passes/asyncify.txt b/test/passes/asyncify_enable-multivalue.txt
index 07fecce10..07fecce10 100644
--- a/test/passes/asyncify.txt
+++ b/test/passes/asyncify_enable-multivalue.txt
diff --git a/test/passes/asyncify.wast b/test/passes/asyncify_enable-multivalue.wast
index b34338bd0..b34338bd0 100644
--- a/test/passes/asyncify.wast
+++ b/test/passes/asyncify_enable-multivalue.wast