diff options
-rw-r--r-- | src/wasm/wasm-type.cpp | 6 | ||||
-rw-r--r-- | src/wasm/wasm-validator.cpp | 6 | ||||
-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 |