summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-validator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-validator.cpp')
-rw-r--r--src/wasm/wasm-validator.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp
index eaeea7f1a..0de417ed7 100644
--- a/src/wasm/wasm-validator.cpp
+++ b/src/wasm/wasm-validator.cpp
@@ -21,6 +21,7 @@
#include "ir/features.h"
#include "ir/global-utils.h"
+#include "ir/intrinsics.h"
#include "ir/module-utils.h"
#include "ir/stack-utils.h"
#include "ir/utils.h"
@@ -2705,6 +2706,16 @@ static void validateImports(Module& module, ValidationInfo& info) {
"Imported function must not have i64 results");
}
}
+
+ if (Intrinsics(module).isCallWithoutEffects(curr)) {
+ auto lastParam = curr->getParams();
+ if (lastParam.isTuple()) {
+ lastParam = lastParam.getTuple().types.back();
+ }
+ info.shouldBeTrue(lastParam.isFunction(),
+ curr->name,
+ "call.if.used's last param must be a function");
+ }
});
ModuleUtils::iterImportedGlobals(module, [&](Global* curr) {
if (!module.features.hasMutableGlobals()) {