diff options
author | Nathan Froyd <froydnj@gmail.com> | 2018-03-01 17:05:36 -0500 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2018-03-01 14:05:36 -0800 |
commit | 363c2c7abd68847b4b226764160e2d3431dc3b54 (patch) | |
tree | df8337f6fbb18aa816eb20b3deec958425862bfe /src/wasm2asm.h | |
parent | 142bd78059afd225c404ea1caedd0114699f7bc7 (diff) | |
download | binaryen-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.h | 5 |
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)); |