LLVM 20.0.0git
Functions

A basic block represents a single entry single exit section of code. More...

Collaboration diagram for Basic Block:

Functions

LLVMValueRef LLVMBasicBlockAsValue (LLVMBasicBlockRef BB)
 Convert a basic block instance to a value type.
 
LLVMBool LLVMValueIsBasicBlock (LLVMValueRef Val)
 Determine whether an LLVMValueRef is itself a basic block.
 
LLVMBasicBlockRef LLVMValueAsBasicBlock (LLVMValueRef Val)
 Convert an LLVMValueRef to an LLVMBasicBlockRef instance.
 
const charLLVMGetBasicBlockName (LLVMBasicBlockRef BB)
 Obtain the string name of a basic block.
 
LLVMValueRef LLVMGetBasicBlockParent (LLVMBasicBlockRef BB)
 Obtain the function to which a basic block belongs.
 
LLVMValueRef LLVMGetBasicBlockTerminator (LLVMBasicBlockRef BB)
 Obtain the terminator instruction for a basic block.
 
unsigned LLVMCountBasicBlocks (LLVMValueRef Fn)
 Obtain the number of basic blocks in a function.
 
void LLVMGetBasicBlocks (LLVMValueRef Fn, LLVMBasicBlockRef *BasicBlocks)
 Obtain all of the basic blocks in a function.
 
LLVMBasicBlockRef LLVMGetFirstBasicBlock (LLVMValueRef Fn)
 Obtain the first basic block in a function.
 
LLVMBasicBlockRef LLVMGetLastBasicBlock (LLVMValueRef Fn)
 Obtain the last basic block in a function.
 
LLVMBasicBlockRef LLVMGetNextBasicBlock (LLVMBasicBlockRef BB)
 Advance a basic block iterator.
 
LLVMBasicBlockRef LLVMGetPreviousBasicBlock (LLVMBasicBlockRef BB)
 Go backwards in a basic block iterator.
 
LLVMBasicBlockRef LLVMGetEntryBasicBlock (LLVMValueRef Fn)
 Obtain the basic block that corresponds to the entry point of a function.
 
void LLVMInsertExistingBasicBlockAfterInsertBlock (LLVMBuilderRef Builder, LLVMBasicBlockRef BB)
 Insert the given basic block after the insertion point of the given builder.
 
void LLVMAppendExistingBasicBlock (LLVMValueRef Fn, LLVMBasicBlockRef BB)
 Append the given basic block to the basic block list of the given function.
 
LLVMBasicBlockRef LLVMCreateBasicBlockInContext (LLVMContextRef C, const char *Name)
 Create a new basic block without inserting it into a function.
 
LLVMBasicBlockRef LLVMAppendBasicBlockInContext (LLVMContextRef C, LLVMValueRef Fn, const char *Name)
 Append a basic block to the end of a function.
 
LLVMBasicBlockRef LLVMAppendBasicBlock (LLVMValueRef Fn, const char *Name)
 Append a basic block to the end of a function using the global context.
 
LLVMBasicBlockRef LLVMInsertBasicBlockInContext (LLVMContextRef C, LLVMBasicBlockRef BB, const char *Name)
 Insert a basic block in a function before another basic block.
 
LLVMBasicBlockRef LLVMInsertBasicBlock (LLVMBasicBlockRef InsertBeforeBB, const char *Name)
 Insert a basic block in a function using the global context.
 
void LLVMDeleteBasicBlock (LLVMBasicBlockRef BB)
 Remove a basic block from a function and delete it.
 
void LLVMRemoveBasicBlockFromParent (LLVMBasicBlockRef BB)
 Remove a basic block from a function.
 
void LLVMMoveBasicBlockBefore (LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos)
 Move a basic block to before another one.
 
void LLVMMoveBasicBlockAfter (LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos)
 Move a basic block to after another one.
 
LLVMValueRef LLVMGetFirstInstruction (LLVMBasicBlockRef BB)
 Obtain the first instruction in a basic block.
 
LLVMValueRef LLVMGetLastInstruction (LLVMBasicBlockRef BB)
 Obtain the last instruction in a basic block.
 

Detailed Description

A basic block represents a single entry single exit section of code.

Basic blocks contain a list of instructions which form the body of the block.

Basic blocks belong to functions. They have the type of label.

Basic blocks are themselves values. However, the C API models them as LLVMBasicBlockRef.

See also
llvm::BasicBlock

Function Documentation

◆ LLVMAppendBasicBlock()

LLVMBasicBlockRef LLVMAppendBasicBlock ( LLVMValueRef  Fn,
const char Name 
)

Append a basic block to the end of a function using the global context.

See also
llvm::BasicBlock::Create()

Definition at line 2866 of file Core.cpp.

References LLVMAppendBasicBlockInContext(), LLVMGetGlobalContext(), and Name.

◆ LLVMAppendBasicBlockInContext()

LLVMBasicBlockRef LLVMAppendBasicBlockInContext ( LLVMContextRef  C,
LLVMValueRef  Fn,
const char Name 
)

Append a basic block to the end of a function.

See also
llvm::BasicBlock::Create()

Definition at line 2860 of file Core.cpp.

References llvm::CallingConv::C, llvm::BasicBlock::Create(), Name, unwrap(), and llvm::wrap().

Referenced by LLVMAppendBasicBlock().

◆ LLVMAppendExistingBasicBlock()

void LLVMAppendExistingBasicBlock ( LLVMValueRef  Fn,
LLVMBasicBlockRef  BB 
)

Append the given basic block to the basic block list of the given function.

See also
llvm::Function::BasicBlockListType::push_back()

Definition at line 2855 of file Core.cpp.

References unwrap().

◆ LLVMBasicBlockAsValue()

LLVMValueRef LLVMBasicBlockAsValue ( LLVMBasicBlockRef  BB)

Convert a basic block instance to a value type.

Definition at line 2772 of file Core.cpp.

References unwrap(), and llvm::wrap().

◆ LLVMCountBasicBlocks()

unsigned LLVMCountBasicBlocks ( LLVMValueRef  Fn)

Obtain the number of basic blocks in a function.

Parameters
FnFunction value to operate on.

Definition at line 2796 of file Core.cpp.

◆ LLVMCreateBasicBlockInContext()

LLVMBasicBlockRef LLVMCreateBasicBlockInContext ( LLVMContextRef  C,
const char Name 
)

Create a new basic block without inserting it into a function.

See also
llvm::BasicBlock::Create()

Definition at line 2842 of file Core.cpp.

References llvm::CallingConv::C, llvm::BasicBlock::Create(), Name, unwrap(), and llvm::wrap().

◆ LLVMDeleteBasicBlock()

void LLVMDeleteBasicBlock ( LLVMBasicBlockRef  BB)

Remove a basic block from a function and delete it.

This deletes the basic block from its containing function and deletes the basic block itself.

See also
llvm::BasicBlock::eraseFromParent()

Definition at line 2882 of file Core.cpp.

References llvm::BasicBlock::eraseFromParent(), and unwrap().

◆ LLVMGetBasicBlockName()

const char * LLVMGetBasicBlockName ( LLVMBasicBlockRef  BB)

Obtain the string name of a basic block.

Definition at line 2784 of file Core.cpp.

References llvm::StringRef::data(), llvm::Value::getName(), and unwrap().

◆ LLVMGetBasicBlockParent()

LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef  BB)

Obtain the function to which a basic block belongs.

See also
llvm::BasicBlock::getParent()

Definition at line 2788 of file Core.cpp.

References getParent(), unwrap(), and llvm::wrap().

◆ LLVMGetBasicBlocks()

void LLVMGetBasicBlocks ( LLVMValueRef  Fn,
LLVMBasicBlockRef BasicBlocks 
)

Obtain all of the basic blocks in a function.

This operates on a function value. The BasicBlocks parameter is a pointer to a pre-allocated array of LLVMBasicBlockRef of at least LLVMCountBasicBlocks() in length. This array is populated with LLVMBasicBlockRef instances.

Definition at line 2800 of file Core.cpp.

References llvm::wrap().

◆ LLVMGetBasicBlockTerminator()

LLVMValueRef LLVMGetBasicBlockTerminator ( LLVMBasicBlockRef  BB)

Obtain the terminator instruction for a basic block.

If the basic block does not have a terminator (it is not well-formed if it doesn't), then NULL is returned.

The returned LLVMValueRef corresponds to an llvm::Instruction.

See also
llvm::BasicBlock::getTerminator()

Definition at line 2792 of file Core.cpp.

References unwrap(), and llvm::wrap().

◆ LLVMGetEntryBasicBlock()

LLVMBasicBlockRef LLVMGetEntryBasicBlock ( LLVMValueRef  Fn)

Obtain the basic block that corresponds to the entry point of a function.

See also
llvm::Function::getEntryBlock()

Definition at line 2806 of file Core.cpp.

References llvm::wrap().

◆ LLVMGetFirstBasicBlock()

LLVMBasicBlockRef LLVMGetFirstBasicBlock ( LLVMValueRef  Fn)

Obtain the first basic block in a function.

The returned basic block can be used as an iterator. You will likely eventually call into LLVMGetNextBasicBlock() with it.

See also
llvm::Function::begin()

Definition at line 2810 of file Core.cpp.

References I, and llvm::wrap().

◆ LLVMGetFirstInstruction()

LLVMValueRef LLVMGetFirstInstruction ( LLVMBasicBlockRef  BB)

Obtain the first instruction in a basic block.

The returned LLVMValueRef corresponds to a llvm::Instruction instance.

Definition at line 2904 of file Core.cpp.

References llvm::Block, I, unwrap(), and llvm::wrap().

◆ LLVMGetLastBasicBlock()

LLVMBasicBlockRef LLVMGetLastBasicBlock ( LLVMValueRef  Fn)

Obtain the last basic block in a function.

See also
llvm::Function::end()

Definition at line 2818 of file Core.cpp.

References I, and llvm::wrap().

◆ LLVMGetLastInstruction()

LLVMValueRef LLVMGetLastInstruction ( LLVMBasicBlockRef  BB)

Obtain the last instruction in a basic block.

The returned LLVMValueRef corresponds to an LLVM:Instruction.

Definition at line 2912 of file Core.cpp.

References llvm::Block, I, unwrap(), and llvm::wrap().

◆ LLVMGetNextBasicBlock()

LLVMBasicBlockRef LLVMGetNextBasicBlock ( LLVMBasicBlockRef  BB)

Advance a basic block iterator.

Definition at line 2826 of file Core.cpp.

References llvm::Block, I, unwrap(), and llvm::wrap().

◆ LLVMGetPreviousBasicBlock()

LLVMBasicBlockRef LLVMGetPreviousBasicBlock ( LLVMBasicBlockRef  BB)

Go backwards in a basic block iterator.

Definition at line 2834 of file Core.cpp.

References llvm::Block, I, unwrap(), and llvm::wrap().

◆ LLVMInsertBasicBlock()

LLVMBasicBlockRef LLVMInsertBasicBlock ( LLVMBasicBlockRef  InsertBeforeBB,
const char Name 
)

Insert a basic block in a function using the global context.

See also
llvm::BasicBlock::Create()

Definition at line 2877 of file Core.cpp.

References LLVMGetGlobalContext(), LLVMInsertBasicBlockInContext(), and Name.

◆ LLVMInsertBasicBlockInContext()

LLVMBasicBlockRef LLVMInsertBasicBlockInContext ( LLVMContextRef  C,
LLVMBasicBlockRef  BB,
const char Name 
)

Insert a basic block in a function before another basic block.

The function to add to is determined by the function of the passed basic block.

See also
llvm::BasicBlock::Create()

Definition at line 2870 of file Core.cpp.

References llvm::CallingConv::C, llvm::BasicBlock::Create(), llvm::BasicBlock::getParent(), Name, unwrap(), and llvm::wrap().

Referenced by LLVMInsertBasicBlock().

◆ LLVMInsertExistingBasicBlockAfterInsertBlock()

void LLVMInsertExistingBasicBlockAfterInsertBlock ( LLVMBuilderRef  Builder,
LLVMBasicBlockRef  BB 
)

Insert the given basic block after the insertion point of the given builder.

The insertion point must be valid.

See also
llvm::Function::BasicBlockListType::insertAfter()

Definition at line 2847 of file Core.cpp.

References assert(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::BasicBlock::getParent(), llvm::Function::insert(), and unwrap().

◆ LLVMMoveBasicBlockAfter()

void LLVMMoveBasicBlockAfter ( LLVMBasicBlockRef  BB,
LLVMBasicBlockRef  MovePos 
)

Move a basic block to after another one.

See also
llvm::BasicBlock::moveAfter()

Definition at line 2894 of file Core.cpp.

References llvm::BasicBlock::moveAfter(), and unwrap().

◆ LLVMMoveBasicBlockBefore()

void LLVMMoveBasicBlockBefore ( LLVMBasicBlockRef  BB,
LLVMBasicBlockRef  MovePos 
)

Move a basic block to before another one.

See also
llvm::BasicBlock::moveBefore()

Definition at line 2890 of file Core.cpp.

References llvm::BasicBlock::moveBefore(), and unwrap().

◆ LLVMRemoveBasicBlockFromParent()

void LLVMRemoveBasicBlockFromParent ( LLVMBasicBlockRef  BB)

Remove a basic block from a function.

This deletes the basic block from its containing function but keep the basic block alive.

See also
llvm::BasicBlock::removeFromParent()

Definition at line 2886 of file Core.cpp.

References llvm::BasicBlock::removeFromParent(), and unwrap().

◆ LLVMValueAsBasicBlock()

LLVMBasicBlockRef LLVMValueAsBasicBlock ( LLVMValueRef  Val)

Convert an LLVMValueRef to an LLVMBasicBlockRef instance.

Definition at line 2780 of file Core.cpp.

References llvm::wrap().

◆ LLVMValueIsBasicBlock()

LLVMBool LLVMValueIsBasicBlock ( LLVMValueRef  Val)

Determine whether an LLVMValueRef is itself a basic block.

Definition at line 2776 of file Core.cpp.

References unwrap().