From a88f8f275e068d6cdfb8879dc3bab1fe3201efbc Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 24 Jun 2016 13:06:00 -0700 Subject: finalize blocks properly in relooper (#600) --- src/cfg/Relooper.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/cfg/Relooper.cpp b/src/cfg/Relooper.cpp index 06867c748..78b3f3e1c 100644 --- a/src/cfg/Relooper.cpp +++ b/src/cfg/Relooper.cpp @@ -55,6 +55,7 @@ wasm::Expression* Branch::Render(RelooperBuilder& Builder, Block *Target, bool S Ret->list.push_back(Builder.makeContinue(Ancestor->Id)); } } + Ret->finalize(); return Ret; } @@ -85,7 +86,10 @@ wasm::Expression* Block::Render(RelooperBuilder& Builder, bool InLoop) { } if (Code) Ret->list.push_back(Code); - if (!ProcessedBranchesOut.size()) return Ret; + if (!ProcessedBranchesOut.size()) { + Ret->finalize(); + return Ret; + } bool SetLabel = true; // in some cases it is clear we can avoid setting label, see later bool ForceSetLabel = Shape::IsEmulated(Parent) != nullptr; @@ -219,6 +223,8 @@ wasm::Expression* Block::Render(RelooperBuilder& Builder, bool InLoop) { Ret->list.push_back(Root); } + Ret->finalize(); + return Ret; } -- cgit v1.2.3