summaryrefslogtreecommitdiff
path: root/src/wasm2asm.h
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@gmail.com>2018-03-01 17:05:36 -0500
committerAlon Zakai <alonzakai@gmail.com>2018-03-01 14:05:36 -0800
commit363c2c7abd68847b4b226764160e2d3431dc3b54 (patch)
treedf8337f6fbb18aa816eb20b3deec958425862bfe /src/wasm2asm.h
parent142bd78059afd225c404ea1caedd0114699f7bc7 (diff)
downloadbinaryen-363c2c7abd68847b4b226764160e2d3431dc3b54.tar.gz
binaryen-363c2c7abd68847b4b226764160e2d3431dc3b54.tar.bz2
binaryen-363c2c7abd68847b4b226764160e2d3431dc3b54.zip
eliminate multiple return statements for wasm2asm functions (#1448)
This change eliminates one issue that prevents asm.js validation of the generated code, see #1443.
Diffstat (limited to 'src/wasm2asm.h')
-rw-r--r--src/wasm2asm.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h
index 59f2d6ab8..3c2cfcb6e 100644
--- a/src/wasm2asm.h
+++ b/src/wasm2asm.h
@@ -651,11 +651,12 @@ Ref Wasm2AsmBuilder::processFunction(Function* func) {
);
};
scanFunctionBody(func->body);
- bool isBodyBlock = (func->body->_id == Expression::BlockId);
+ bool isBodyBlock = func->body->is<Block>();
ExpressionList* stats = isBodyBlock ?
&static_cast<Block*>(func->body)->list : nullptr;
bool endsInReturn =
- (isBodyBlock && ((*stats)[stats->size()-1]->_id == Expression::ReturnId));
+ (isBodyBlock && ((*stats)[stats->size()-1]->is<Return>())) ||
+ func->body->is<Return>();
if (endsInReturn) {
// return already taken care of
flattenAppend(ret, processFunctionBody(func, NO_RESULT));