diff options
Diffstat (limited to 'clang/lib/CodeGen/CGStmt.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGStmt.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp index a66b6fec041..ad081c91f7c 100644 --- a/clang/lib/CodeGen/CGStmt.cpp +++ b/clang/lib/CodeGen/CGStmt.cpp @@ -157,9 +157,15 @@ RValue CodeGenFunction::EmitCompoundStmt(const CompoundStmt &S, bool GetLast, return EmitAnyExpr(cast<Expr>(LastStmt), AggLoc); } -void CodeGenFunction::EmitBlock(llvm::BasicBlock *BB) { +void CodeGenFunction::EmitBlock(llvm::BasicBlock *BB, bool IsFinished) { // Fall out of the current block (if necessary). EmitBranch(BB); + + if (IsFinished && BB->use_empty()) { + delete BB; + return; + } + CurFn->getBasicBlockList().push_back(BB); Builder.SetInsertPoint(BB); } |

