if (LastBB->getTerminator()) {
// If the previous block is already terminated, don't touch it.
- } else if (LastBB->empty() && isDummyBlock(LastBB)) {
+ } else if (isDummyBlock(LastBB)) {
// If the last block was an empty placeholder, remove it now.
// TODO: cache and reuse these.
LastBB->eraseFromParent();
// Emit the code for this case. We do this first to make sure it is
// properly chained from our predecessor before generating the
// switch machinery to enter this block.
- StartBlock("sw.bb");
+ EmitBlock(createBasicBlock("sw.bb"));
llvm::BasicBlock *CaseDest = Builder.GetInsertBlock();
EmitStmt(S.getSubStmt());
return;
}
- StartBlock("sw.bb");
+ EmitBlock(createBasicBlock("sw.bb"));
llvm::BasicBlock *CaseDest = Builder.GetInsertBlock();
llvm::APSInt CaseVal = S.getLHS()->getIntegerConstantExprValue(getContext());
SwitchInsn->addCase(llvm::ConstantInt::get(CaseVal), CaseDest);
CaseRangeBlock = DefaultBlock;
// Create basic block for body of switch
- StartBlock("sw.body");
+ EmitBlock(createBasicBlock("sw.body"));
// All break statements jump to NextBlock. If BreakContinueStack is non empty
// then reuse last ContinueBlock.
return false;
}
-/// StartBlock - Start new block named N. If insert block is a dummy block
-/// then reuse it.
-void CodeGenFunction::StartBlock(const char *N) {
- llvm::BasicBlock *BB = Builder.GetInsertBlock();
- if (!isDummyBlock(BB))
- EmitBlock(createBasicBlock(N));
- else
- BB->setName(N);
-}
-
/// getCGRecordLayout - Return record layout info.
const CGRecordLayout *CodeGenFunction::getCGRecordLayout(CodeGenTypes &CGT,
QualType Ty) {