forked from OSchip/llvm-project
[LLVM-C] Add bindings to insert basic blocks
Summary: Now that we can create standalone basic blocks, it's useful to be able to append them. Add bindings to - Insert a basic block after the current insertion block - Append a basic block to the end of a function's list of basic blocks Reviewers: whitequark, deadalnix, harlanhaskins Reviewed By: whitequark, harlanhaskins Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59658 llvm-svn: 357812
This commit is contained in:
parent
6e68a79110
commit
b4baa5602d
|
@ -2916,6 +2916,24 @@ LLVMBasicBlockRef LLVMGetPreviousBasicBlock(LLVMBasicBlockRef BB);
|
|||
*/
|
||||
LLVMBasicBlockRef LLVMGetEntryBasicBlock(LLVMValueRef Fn);
|
||||
|
||||
/**
|
||||
* Insert the given basic block after the insertion point of the given builder.
|
||||
*
|
||||
* The insertion point must be valid.
|
||||
*
|
||||
* @see llvm::Function::BasicBlockListType::insertAfter()
|
||||
*/
|
||||
void LLVMInsertExistingBasicBlockAfterInsertBlock(LLVMBuilderRef Builder,
|
||||
LLVMBasicBlockRef BB);
|
||||
|
||||
/**
|
||||
* Append the given basic block to the basic block list of the given function.
|
||||
*
|
||||
* @see llvm::Function::BasicBlockListType::push_back()
|
||||
*/
|
||||
void LLVMAppendExistingBasicBlock(LLVMValueRef Fn,
|
||||
LLVMBasicBlockRef BB);
|
||||
|
||||
/**
|
||||
* Create a new basic block without inserting it into a function.
|
||||
*
|
||||
|
|
|
@ -2609,6 +2609,20 @@ LLVMBasicBlockRef LLVMCreateBasicBlockInContext(LLVMContextRef C,
|
|||
return wrap(llvm::BasicBlock::Create(*unwrap(C), Name));
|
||||
}
|
||||
|
||||
void LLVMInsertExistingBasicBlockAfterInsertBlock(LLVMBuilderRef Builder,
|
||||
LLVMBasicBlockRef BB) {
|
||||
BasicBlock *ToInsert = unwrap(BB);
|
||||
BasicBlock *CurBB = unwrap(Builder)->GetInsertBlock();
|
||||
assert(CurBB && "current insertion point is invalid!");
|
||||
CurBB->getParent()->getBasicBlockList().insertAfter(CurBB->getIterator(),
|
||||
ToInsert);
|
||||
}
|
||||
|
||||
void LLVMAppendExistingBasicBlock(LLVMValueRef Fn,
|
||||
LLVMBasicBlockRef BB) {
|
||||
unwrap<Function>(Fn)->getBasicBlockList().push_back(unwrap(BB));
|
||||
}
|
||||
|
||||
LLVMBasicBlockRef LLVMAppendBasicBlockInContext(LLVMContextRef C,
|
||||
LLVMValueRef FnRef,
|
||||
const char *Name) {
|
||||
|
|
Loading…
Reference in New Issue