From 2ddb7cb1f45cf9aeef90ec5c8000a2d279f0302b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 18 May 2017 14:47:27 -0700 Subject: Address review feedback for #1014 (#1016) * address review feedback for #1014 --- src/ast_utils.h | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'src/ast_utils.h') 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> { 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(); } -- cgit v1.2.3