From 91e0d1012801ec97d00f5b1e64a961666c6a582d Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 30 May 2020 06:43:30 -0700 Subject: [PATCH] Deferred call fix for 'do' statement --- IDEHelper/Compiler/BfStmtEvaluator.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index 11544a43..c3345d27 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -5267,15 +5267,16 @@ void BfModule::Visit(BfDoStatement* doStmt) mBfIRBuilder->CreateBr(bodyBB); mBfIRBuilder->SetInsertPoint(bodyBB); VisitEmbeddedStatement(doStmt->mEmbeddedStatement); + + RestoreScopeState(); + if (!mCurMethodState->mLeftBlockUncond) mBfIRBuilder->CreateBr(endBB); mCurMethodState->SetHadReturn(false); mCurMethodState->mLeftBlockUncond = false; mBfIRBuilder->AddBlock(endBB); - mBfIRBuilder->SetInsertPoint(endBB); - - RestoreScopeState(); + mBfIRBuilder->SetInsertPoint(endBB); } void BfModule::Visit(BfRepeatStatement* repeatStmt)