diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index 31402be4..da55872a 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -4039,14 +4039,12 @@ void BfModule::Visit(BfSwitchStatement* switchStmt) numExpressions += (int)switchCase->mCaseExpressions.size(); } + defaultBlock = mBfIRBuilder->CreateBlock("default"); if (switchStmt->mDefaultCase != NULL) - { - defaultBlock = mBfIRBuilder->CreateBlock("default"); + { blocks.push_back(defaultBlock); } - else - defaultBlock = endBlock; - + SizedArray deferredLocalAssignDataVec; deferredLocalAssignDataVec.resize(blocks.size()); @@ -4582,6 +4580,14 @@ void BfModule::Visit(BfSwitchStatement* switchStmt) allHadReturns = false; } } + else + { + mBfIRBuilder->AddBlock(defaultBlock); + mBfIRBuilder->SetInsertPoint(defaultBlock); + if (isComprehensive) + mBfIRBuilder->CreateUnreachable(); + mBfIRBuilder->CreateBr(endBlock); + } if (isComprehensive) {