diff options
author | Alon Zakai <alonzakai@gmail.com> | 2017-05-18 14:47:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-18 14:47:27 -0700 |
commit | 2ddb7cb1f45cf9aeef90ec5c8000a2d279f0302b (patch) | |
tree | 62106aee799d3ddc44aed87beb8442685ce8f307 /src/ast_utils.h | |
parent | a5416d2a10490602beb49e5a356828111d229720 (diff) | |
download | binaryen-2ddb7cb1f45cf9aeef90ec5c8000a2d279f0302b.tar.gz binaryen-2ddb7cb1f45cf9aeef90ec5c8000a2d279f0302b.tar.bz2 binaryen-2ddb7cb1f45cf9aeef90ec5c8000a2d279f0302b.zip |
Address review feedback for #1014 (#1016)
* address review feedback for #1014
Diffstat (limited to 'src/ast_utils.h')
-rw-r--r-- | src/ast_utils.h | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/ast_utils.h b/src/ast_utils.h index aa4120569..823c08f9c 100644 --- a/src/ast_utils.h +++ b/src/ast_utils.h @@ -21,6 +21,7 @@ #include "wasm-traversal.h" #include "wasm-builder.h" #include "pass.h" +#include "ast/branch-utils.h" namespace wasm { @@ -371,24 +372,19 @@ struct ReFinalize : public WalkerPass<PostWalker<ReFinalize>> { void visitLoop(Loop *curr) { curr->finalize(); } void visitBreak(Break *curr) { curr->finalize(); - if (curr->value && curr->value->type == unreachable) { - return; // not an actual break + if (BranchUtils::isBranchTaken(curr)) { + breakValues[curr->name] = getValueType(curr->value); } - if (curr->condition && curr->condition->type == unreachable) { - return; // not an actual break - } - breakValues[curr->name] = getValueType(curr->value); } void visitSwitch(Switch *curr) { curr->finalize(); - if (curr->condition->type == unreachable || (curr->value && curr->value->type == unreachable)) { - return; // not an actual break - } - auto valueType = getValueType(curr->value); - for (auto target : curr->targets) { - breakValues[target] = valueType; + if (BranchUtils::isBranchTaken(curr)) { + auto valueType = getValueType(curr->value); + for (auto target : curr->targets) { + breakValues[target] = valueType; + } + breakValues[curr->default_] = valueType; } - breakValues[curr->default_] = valueType; } void visitCall(Call *curr) { curr->finalize(); } void visitCallImport(CallImport *curr) { curr->finalize(); } |