summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcheck.py2
-rw-r--r--src/wasm.h49
2 files changed, 29 insertions, 22 deletions
diff --git a/check.py b/check.py
index 181b32f68..b424f0032 100755
--- a/check.py
+++ b/check.py
@@ -84,7 +84,7 @@ if len(requested) == 0:
# 'address' : filed issue, test looks invalid
# 'exports', 'int_literals' : has a "return" https://github.com/WebAssembly/spec/issues/164
# 'switch': todo once stable
- spec_tests = [os.path.join('spec', t + '.wast') for t in ['conversions', 'endianness', 'f32_cmp', 'f32', 'f64_cmp', 'f64', 'float_exprs', 'forward', 'func_ptrs', 'functions', 'has_feature', 'i32', 'i64', 'imports', 'int_exprs', 'left-to-right', 'memory_redundancy', 'memory_trap', 'names', 'resizing', 'runaway-recursion', 'select']]
+ spec_tests = [os.path.join('spec', t + '.wast') for t in ['conversions', 'endianness', 'f32_cmp', 'f32', 'f64_cmp', 'f64', 'float_exprs', 'forward', 'func_ptrs', 'functions', 'has_feature', 'i32', 'i64', 'imports', 'int_exprs', 'left-to-right', 'memory_redundancy', 'memory_trap', 'names', 'resizing', 'runaway-recursion', 'select', 'store_retval']]
else:
spec_tests = requested[:]
diff --git a/src/wasm.h b/src/wasm.h
index c2d8a1faf..62a263ae9 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -1139,27 +1139,27 @@ struct WasmWalker : public WasmVisitor<void> {
}
// By default, do nothing
- void visitBlock(Block *curr) override {};
- void visitIf(If *curr) override {};
- void visitLoop(Loop *curr) override {};
- void visitLabel(Label *curr) override {};
- void visitBreak(Break *curr) override {};
- void visitSwitch(Switch *curr) override {};
- void visitCall(Call *curr) override {};
- void visitCallImport(CallImport *curr) override {};
- void visitCallIndirect(CallIndirect *curr) override {};
- void visitGetLocal(GetLocal *curr) override {};
- void visitSetLocal(SetLocal *curr) override {};
- void visitLoad(Load *curr) override {};
- void visitStore(Store *curr) override {};
- void visitConst(Const *curr) override {};
- void visitUnary(Unary *curr) override {};
- void visitBinary(Binary *curr) override {};
- void visitCompare(Compare *curr) override {};
- void visitConvert(Convert *curr) override {};
- void visitSelect(Select *curr) override {};
- void visitHost(Host *curr) override {};
- void visitNop(Nop *curr) override {};
+ void visitBlock(Block *curr) override {}
+ void visitIf(If *curr) override {}
+ void visitLoop(Loop *curr) override {}
+ void visitLabel(Label *curr) override {}
+ void visitBreak(Break *curr) override {}
+ void visitSwitch(Switch *curr) override {}
+ void visitCall(Call *curr) override {}
+ void visitCallImport(CallImport *curr) override {}
+ void visitCallIndirect(CallIndirect *curr) override {}
+ void visitGetLocal(GetLocal *curr) override {}
+ void visitSetLocal(SetLocal *curr) override {}
+ void visitLoad(Load *curr) override {}
+ void visitStore(Store *curr) override {}
+ void visitConst(Const *curr) override {}
+ void visitUnary(Unary *curr) override {}
+ void visitBinary(Binary *curr) override {}
+ void visitCompare(Compare *curr) override {}
+ void visitConvert(Convert *curr) override {}
+ void visitSelect(Select *curr) override {}
+ void visitHost(Host *curr) override {}
+ void visitNop(Nop *curr) override {}
// children-first
void walk(Expression*& curr) {
@@ -1272,6 +1272,13 @@ bool Module::validateFunction(Function *func) {
struct Validator : public WasmWalker {
bool valid = true;
+ void should(bool result) {
+ if (!result) valid = false;
+ }
+
+ void visitSetLocal(SetLocal *curr) override {
+ should(curr->type == curr->value->type);
+ }
void visitLoad(Load *curr) override {
if (!validateAlignment(curr->align)) valid = false;
}