From: Daniel Dunbar Date: Tue, 11 Nov 2008 22:06:59 +0000 (+0000) Subject: Change EmitBranch to always clear the insert point to clarify irgen X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5e08ad3cc62ab94649959ae227a9a411a729bf49;p=clang Change EmitBranch to always clear the insert point to clarify irgen invariants. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59085 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index f2088f416d..97a7a05768 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -168,11 +168,12 @@ void CodeGenFunction::EmitBranch(llvm::BasicBlock *Target) { // If the last block was an empty placeholder, remove it now. // TODO: cache and reuse these. CurBB->eraseFromParent(); - Builder.ClearInsertionPoint(); } else { // Otherwise, create a fall-through branch. Builder.CreateBr(Target); } + + Builder.ClearInsertionPoint(); } void CodeGenFunction::EmitDummyBlock() { diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h index d482086e1a..b833380e49 100644 --- a/lib/CodeGen/CodeGenFunction.h +++ b/lib/CodeGen/CodeGenFunction.h @@ -229,6 +229,10 @@ public: /// EmitBranch - Emit a branch to the specified basic block from the /// current insert block, taking care to avoid creation of branches /// from dummy blocks. + /// + /// This function clears the current insertion point. The caller + /// should follow calls to this function with calls to Emit*Block + /// prior to generation new code. void EmitBranch(llvm::BasicBlock *Block); /// EmitDummyBlock - Emit a new block which will never be branched