diff options
Diffstat (limited to 'src/passes')
-rw-r--r-- | src/passes/LowerCase.cpp | 2 | ||||
-rw-r--r-- | src/passes/LowerIfElse.cpp | 2 | ||||
-rw-r--r-- | src/passes/LowerInt64.cpp | 3 |
3 files changed, 5 insertions, 2 deletions
diff --git a/src/passes/LowerCase.cpp b/src/passes/LowerCase.cpp index f890de411..c0ab8d235 100644 --- a/src/passes/LowerCase.cpp +++ b/src/passes/LowerCase.cpp @@ -84,11 +84,13 @@ struct LowerCase : public WalkerPass<WasmWalker<LowerCase, void>> { if (curr->cases.size() == 0) return; auto top = allocator->alloc<Block>(); top->list.push_back(curr); + top->finalize(); for (auto& c : curr->cases) { top->name = c.name; auto next = allocator->alloc<Block>(); next->list.push_back(top); next->list.push_back(c.body); + next->finalize(); top = next; } curr->cases.clear(); diff --git a/src/passes/LowerIfElse.cpp b/src/passes/LowerIfElse.cpp index fa575d87d..922a294d2 100644 --- a/src/passes/LowerIfElse.cpp +++ b/src/passes/LowerIfElse.cpp @@ -49,7 +49,7 @@ struct LowerIfElse : public WalkerPass<WasmWalker<LowerIfElse, void>> { block->name = name; block->list.push_back(curr); block->list.push_back(curr->ifFalse); - block->type = curr->type; + block->finalize(); curr->ifFalse = nullptr; auto break_ = allocator->alloc<Break>(); break_->name = name; diff --git a/src/passes/LowerInt64.cpp b/src/passes/LowerInt64.cpp index 58e56cba6..7af7443e5 100644 --- a/src/passes/LowerInt64.cpp +++ b/src/passes/LowerInt64.cpp @@ -112,7 +112,7 @@ struct LowerInt64 : public Pass { ret->list.push_back(curr); ret->list.push_back(set); ret->list.push_back(low); // so the block returns the low bits - ret->type = i32; + ret->finalize(); fixes[ret] = high; replaceCurrent(ret); } @@ -132,6 +132,7 @@ struct LowerInt64 : public Pass { set->type = value->type; ret->list.push_back(set); } + ret->finalize(); return ret; } |