summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-09-30 09:15:48 -0700
committerGitHub <noreply@github.com>2016-09-30 09:15:48 -0700
commit2a543b48db250ea9cd7172b6db9a0b8d3657475a (patch)
tree1bc6866bf79eb2f661345bb04e3fa49c857311f5
parenta82528f17feba6b1c34794c645ea5c78892a57d0 (diff)
downloadbinaryen-2a543b48db250ea9cd7172b6db9a0b8d3657475a.tar.gz
binaryen-2a543b48db250ea9cd7172b6db9a0b8d3657475a.tar.bz2
binaryen-2a543b48db250ea9cd7172b6db9a0b8d3657475a.zip
validate drop (#712)
-rw-r--r--src/wasm-validator.h7
-rw-r--r--test/passes/vacuum.txt16
-rw-r--r--test/passes/vacuum.wast6
3 files changed, 13 insertions, 16 deletions
diff --git a/src/wasm-validator.h b/src/wasm-validator.h
index 3616313d3..3c580ce51 100644
--- a/src/wasm-validator.h
+++ b/src/wasm-validator.h
@@ -303,12 +303,7 @@ public:
}
void visitDrop(Drop* curr) {
- // TODO: assert on this, when tests pass
- if (getenv("BINARYEN_WARN_DROP")) {
- if (!(isConcreteWasmType(curr->value->type) || curr->value->type == unreachable)) {
- std::cerr << "warning: bad drop " << curr << " in " << (getFunction() ? getFunction()->name : Name("?")) << '\n';
- }
- }
+ shouldBeTrue(isConcreteWasmType(curr->value->type) || curr->value->type == unreachable, curr, "can only drop a valid value");
}
void visitReturn(Return* curr) {
diff --git a/test/passes/vacuum.txt b/test/passes/vacuum.txt
index 2639dee5d..0c2feeb09 100644
--- a/test/passes/vacuum.txt
+++ b/test/passes/vacuum.txt
@@ -145,17 +145,17 @@
)
(func $if-drop (type $3) (result i32)
(block $out
- (drop
- (if
- (call $if-drop)
+ (if
+ (call $if-drop)
+ (drop
(call $int)
- (br $out)
)
+ (br $out)
)
- (drop
- (if
- (call $if-drop)
- (br $out)
+ (if
+ (call $if-drop)
+ (br $out)
+ (drop
(call $int)
)
)
diff --git a/test/passes/vacuum.wast b/test/passes/vacuum.wast
index 9095a40f4..05a8611c5 100644
--- a/test/passes/vacuum.wast
+++ b/test/passes/vacuum.wast
@@ -302,13 +302,15 @@
(func $if-drop (result i32)
(block $out
(drop
- (if (call $if-drop)
+ (if i32
+ (call $if-drop)
(call $int)
(br $out)
)
)
(drop
- (if (call $if-drop)
+ (if i32
+ (call $if-drop)
(br $out)
(call $int)
)