[wasm] Fix set_local appearing in unreachable code.
R=ahaas@chromium.org LOG=Y BUG=chromium:575861 Review URL: https://codereview.chromium.org/1573053003 Cr-Commit-Position: refs/heads/master@{#33213}
This commit is contained in:
parent
2b352bb84f
commit
391517ea99
@ -903,7 +903,7 @@ class LR_WasmDecoder : public Decoder {
|
||||
LocalType type = LocalOperand(p->pc(), &index, &unused);
|
||||
Tree* val = p->last();
|
||||
if (type == val->type) {
|
||||
if (builder_) ssa_env_->locals[index] = val->node;
|
||||
if (build()) ssa_env_->locals[index] = val->node;
|
||||
p->tree->node = val->node;
|
||||
} else {
|
||||
error(p->pc(), val->pc, "Typecheck failed in SetLocal");
|
||||
|
@ -1684,6 +1684,15 @@ TEST(Run_Wasm_Block_If_P_assign) {
|
||||
}
|
||||
|
||||
|
||||
TEST(Run_Wasm_DanglingAssign) {
|
||||
WasmRunner<int32_t> r(MachineType::Int32());
|
||||
// { return 0; p0 = 0; }
|
||||
BUILD(r,
|
||||
WASM_BLOCK(2, WASM_RETURN(WASM_I8(99)), WASM_SET_LOCAL(0, WASM_ZERO)));
|
||||
CHECK_EQ(99, r.Call(1));
|
||||
}
|
||||
|
||||
|
||||
TEST(Run_Wasm_ExprIf_P) {
|
||||
WasmRunner<int32_t> r(MachineType::Int32());
|
||||
// p0 ? 11 : 22;
|
||||
|
Loading…
Reference in New Issue
Block a user