summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-21 10:03:28 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-21 10:10:41 -0800
commit8b77837812708b1ca87b8b38ab1a6a3d243dd0aa (patch)
treeb7e5d3c2c63261720bf702f6ef6a677fd4fc44f9 /src
parentbf599213828a42ee1723305abcba6569751298f0 (diff)
downloadbinaryen-8b77837812708b1ca87b8b38ab1a6a3d243dd0aa.tar.gz
binaryen-8b77837812708b1ca87b8b38ab1a6a3d243dd0aa.tar.bz2
binaryen-8b77837812708b1ca87b8b38ab1a6a3d243dd0aa.zip
if_else returns a value, but if does not
Diffstat (limited to 'src')
-rw-r--r--src/wasm-interpreter.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index 3b645595e..336ef1b3b 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -188,7 +188,11 @@ private:
Flow flow = visit(curr->condition);
if (flow.breaking()) return flow;
NOTE_EVAL1(flow.value);
- if (flow.value.geti32()) return visit(curr->ifTrue);
+ if (flow.value.geti32()) {
+ Flow flow = visit(curr->ifTrue);
+ if (!flow.breaking() && !curr->ifFalse) flow.value = Literal(); // if_else returns a value, but if does not
+ return flow;
+ }
if (curr->ifFalse) return visit(curr->ifFalse);
return Flow();
}