class IRBuilder

Declaration

template <typename FolderTy = llvm::ConstantFolder,
          typename InserterTy = llvm::IRBuilderDefaultInserter>
class IRBuilder : public IRBuilderBase { /* full declaration omitted */ };

Description

This provides a uniform API for creating instructions and inserting them into a basic block: either at the end of a BasicBlock, or at a specific iterator location in a block. Note that the builder does not expose the full generality of LLVM instructions. For access to extra instruction properties, use the mutators (e.g. setVolatile) on the instructions after they have been created. Convenience state exists to specify fast-math flags and fp-math tags. The first template argument specifies a class to use for creating constants. This defaults to creating minimally folded constants. The second template argument allows clients to specify custom insertion hooks that are called on every newly created insertion.

Declared at: llvm/include/llvm/IR/IRBuilder.h:2485

Inherits from: IRBuilderBase

Templates

FolderTy = llvm::ConstantFolder
InserterTy = llvm::IRBuilderDefaultInserter

Member Variables

private FolderTy Folder
private InserterTy Inserter

Inherited from IRBuilderBase:

protected BB
protected InsertPt
protected Context
protected Folder
protected Inserter
protected DefaultFPMathTag
protected FMF
protected IsFPConstrained = false
protected DefaultConstrainedExcept = fp::ebStrict
protected DefaultConstrainedRounding = RoundingMode::Dynamic
protected DefaultOperandBundles

Method Overview

  • public IRBuilder<FolderTy, InserterTy>(llvm::LLVMContext & C, FolderTy Folder, InserterTy Inserter = type-parameter-0-1(), llvm::MDNode * FPMathTag = nullptr, ArrayRef<llvm::OperandBundleDef> OpBundles = None)
  • public IRBuilder<FolderTy, InserterTy>(llvm::LLVMContext & C, llvm::MDNode * FPMathTag = nullptr, ArrayRef<llvm::OperandBundleDef> OpBundles = None)
  • public IRBuilder<FolderTy, InserterTy>(llvm::BasicBlock * TheBB, FolderTy Folder, llvm::MDNode * FPMathTag = nullptr, ArrayRef<llvm::OperandBundleDef> OpBundles = None)
  • public IRBuilder<FolderTy, InserterTy>(llvm::BasicBlock * TheBB, llvm::MDNode * FPMathTag = nullptr, ArrayRef<llvm::OperandBundleDef> OpBundles = None)
  • public IRBuilder<FolderTy, InserterTy>(llvm::Instruction * IP, llvm::MDNode * FPMathTag = nullptr, ArrayRef<llvm::OperandBundleDef> OpBundles = None)
  • public IRBuilder<FolderTy, InserterTy>(llvm::BasicBlock * TheBB, BasicBlock::iterator IP, FolderTy Folder, llvm::MDNode * FPMathTag = nullptr, ArrayRef<llvm::OperandBundleDef> OpBundles = None)
  • public IRBuilder<FolderTy, InserterTy>(llvm::BasicBlock * TheBB, BasicBlock::iterator IP, llvm::MDNode * FPMathTag = nullptr, ArrayRef<llvm::OperandBundleDef> OpBundles = None)
  • public IRBuilder<FolderTy, InserterTy>(const IRBuilder<FolderTy, InserterTy> &)
  • public InserterTy & getInserter()

Inherited from IRBuilderBase:

Methods

IRBuilder<FolderTy, InserterTy>(
    llvm::LLVMContext& C,
    FolderTy Folder,
    InserterTy Inserter = type - parameter - 0 -
                          1(),
    llvm::MDNode* FPMathTag = nullptr,
    ArrayRef<llvm::OperandBundleDef> OpBundles =
        None)

Declared at: llvm/include/llvm/IR/IRBuilder.h:2491

Parameters

llvm::LLVMContext& C
FolderTy Folder
InserterTy Inserter = type-parameter-0-1()
llvm::MDNode* FPMathTag = nullptr
ArrayRef<llvm::OperandBundleDef> OpBundles = None

IRBuilder<FolderTy, InserterTy>(
    llvm::LLVMContext& C,
    llvm::MDNode* FPMathTag = nullptr,
    ArrayRef<llvm::OperandBundleDef> OpBundles =
        None)

Declared at: llvm/include/llvm/IR/IRBuilder.h:2497

Parameters

llvm::LLVMContext& C
llvm::MDNode* FPMathTag = nullptr
ArrayRef<llvm::OperandBundleDef> OpBundles = None

IRBuilder<FolderTy, InserterTy>(
    llvm::BasicBlock* TheBB,
    FolderTy Folder,
    llvm::MDNode* FPMathTag = nullptr,
    ArrayRef<llvm::OperandBundleDef> OpBundles =
        None)

Declared at: llvm/include/llvm/IR/IRBuilder.h:2501

Parameters

llvm::BasicBlock* TheBB
FolderTy Folder
llvm::MDNode* FPMathTag = nullptr
ArrayRef<llvm::OperandBundleDef> OpBundles = None

IRBuilder<FolderTy, InserterTy>(
    llvm::BasicBlock* TheBB,
    llvm::MDNode* FPMathTag = nullptr,
    ArrayRef<llvm::OperandBundleDef> OpBundles =
        None)

Declared at: llvm/include/llvm/IR/IRBuilder.h:2509

Parameters

llvm::BasicBlock* TheBB
llvm::MDNode* FPMathTag = nullptr
ArrayRef<llvm::OperandBundleDef> OpBundles = None

IRBuilder<FolderTy, InserterTy>(
    llvm::Instruction* IP,
    llvm::MDNode* FPMathTag = nullptr,
    ArrayRef<llvm::OperandBundleDef> OpBundles =
        None)

Declared at: llvm/include/llvm/IR/IRBuilder.h:2516

Parameters

llvm::Instruction* IP
llvm::MDNode* FPMathTag = nullptr
ArrayRef<llvm::OperandBundleDef> OpBundles = None

IRBuilder<FolderTy, InserterTy>(
    llvm::BasicBlock* TheBB,
    BasicBlock::iterator IP,
    FolderTy Folder,
    llvm::MDNode* FPMathTag = nullptr,
    ArrayRef<llvm::OperandBundleDef> OpBundles =
        None)

Declared at: llvm/include/llvm/IR/IRBuilder.h:2523

Parameters

llvm::BasicBlock* TheBB
BasicBlock::iterator IP
FolderTy Folder
llvm::MDNode* FPMathTag = nullptr
ArrayRef<llvm::OperandBundleDef> OpBundles = None

IRBuilder<FolderTy, InserterTy>(
    llvm::BasicBlock* TheBB,
    BasicBlock::iterator IP,
    llvm::MDNode* FPMathTag = nullptr,
    ArrayRef<llvm::OperandBundleDef> OpBundles =
        None)

Declared at: llvm/include/llvm/IR/IRBuilder.h:2531

Parameters

llvm::BasicBlock* TheBB
BasicBlock::iterator IP
llvm::MDNode* FPMathTag = nullptr
ArrayRef<llvm::OperandBundleDef> OpBundles = None

IRBuilder<FolderTy, InserterTy>(
    const IRBuilder<FolderTy, InserterTy>&)

Description

Avoid copying the full IRBuilder. Prefer using InsertPointGuard or FastMathFlagGuard instead.

Declared at: llvm/include/llvm/IR/IRBuilder.h:2541

Parameters

const IRBuilder<FolderTy, InserterTy>&

InserterTy& getInserter()

Declared at: llvm/include/llvm/IR/IRBuilder.h:2543