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:
- public AddMetadataToInst
- public ClearInsertionPoint
- public CollectMetadataToCopy
- public CreateAShr
- public CreateAShr
- public CreateAShr
- public CreateAdd
- public CreateAddReduce
- public CreateAddrSpaceCast
- public CreateAggregateRet
- public CreateAlignedLoad
- public CreateAlignedLoad
- public CreateAlignedLoad
- public CreateAlignedStore
- public CreateAlignmentAssumption
- public CreateAlignmentAssumption
- public CreateAlloca
- public CreateAlloca
- public CreateAnd
- public CreateAnd
- public CreateAnd
- public CreateAnd
- public CreateAndReduce
- public CreateArithmeticFence
- public CreateAssumption
- public CreateAtomicCmpXchg
- public CreateAtomicRMW
- public CreateBinOp
- public CreateBinaryIntrinsic
- public CreateBitCast
- public CreateBitOrPointerCast
- public CreateBr
- public CreateCall
- public CreateCall
- public CreateCall
- public CreateCall
- public CreateCallBr
- public CreateCallBr
- public CreateCallBr
- public CreateCallBr
- public CreateCast
- public CreateCatchPad
- public CreateCatchRet
- public CreateCatchSwitch
- public CreateCleanupPad
- public CreateCleanupRet
- public CreateCmp
- public CreateCondBr
- public CreateCondBr
- public CreateConstGEP1_32
- public CreateConstGEP1_64
- public CreateConstGEP2_32
- public CreateConstGEP2_64
- public CreateConstInBoundsGEP1_32
- public CreateConstInBoundsGEP1_64
- public CreateConstInBoundsGEP2_32
- public CreateConstInBoundsGEP2_64
- public CreateConstrainedFPBinOp
- public CreateConstrainedFPCall
- public CreateConstrainedFPCast
- public CreateConstrainedFPCmp
- public CreateElementUnorderedAtomicMemCpy
- public CreateElementUnorderedAtomicMemMove
- public CreateElementUnorderedAtomicMemSet
- public CreateElementUnorderedAtomicMemSet
- public CreateExactSDiv
- public CreateExactUDiv
- public CreateExtractElement
- public CreateExtractElement
- public CreateExtractInteger
- public CreateExtractValue
- public CreateExtractVector
- public CreateFAdd
- public CreateFAddFMF
- public CreateFAddReduce
- public CreateFCmp
- public CreateFCmpOEQ
- public CreateFCmpOGE
- public CreateFCmpOGT
- public CreateFCmpOLE
- public CreateFCmpOLT
- public CreateFCmpONE
- public CreateFCmpORD
- public CreateFCmpS
- public CreateFCmpUEQ
- public CreateFCmpUGE
- public CreateFCmpUGT
- public CreateFCmpULE
- public CreateFCmpULT
- public CreateFCmpUNE
- public CreateFCmpUNO
- public CreateFDiv
- public CreateFDivFMF
- public CreateFMul
- public CreateFMulFMF
- public CreateFMulReduce
- public CreateFNeg
- public CreateFNegFMF
- public CreateFPCast
- public CreateFPExt
- public CreateFPMaxReduce
- public CreateFPMinReduce
- public CreateFPToSI
- public CreateFPToUI
- public CreateFPTrunc
- public CreateFRem
- public CreateFRemFMF
- public CreateFSub
- public CreateFSubFMF
- public CreateFence
- public CreateFreeze
- public CreateGCGetPointerBase
- public CreateGCGetPointerOffset
- public CreateGCRelocate
- public CreateGCResult
- public CreateGCStatepointCall
- public CreateGCStatepointCall
- public CreateGCStatepointCall
- public CreateGCStatepointInvoke
- public CreateGCStatepointInvoke
- public CreateGCStatepointInvoke
- public CreateGEP
- public CreateGlobalString
- public CreateGlobalStringPtr
- public CreateICmp
- public CreateICmpEQ
- public CreateICmpNE
- public CreateICmpSGE
- public CreateICmpSGT
- public CreateICmpSLE
- public CreateICmpSLT
- public CreateICmpUGE
- public CreateICmpUGT
- public CreateICmpULE
- public CreateICmpULT
- public CreateInBoundsGEP
- public CreateIndirectBr
- public CreateInsertElement
- public CreateInsertElement
- public CreateInsertElement
- public CreateInsertElement
- public CreateInsertValue
- public CreateInsertVector
- public CreateIntCast
- public CreateIntCast
- public CreateIntMaxReduce
- public CreateIntMinReduce
- public CreateIntToPtr
- public CreateIntrinsic
- public CreateInvariantStart
- public CreateInvoke
- public CreateInvoke
- public CreateInvoke
- public CreateInvoke
- public CreateIsNeg
- public CreateIsNotNeg
- public CreateIsNotNull
- public CreateIsNull
- public CreateLShr
- public CreateLShr
- public CreateLShr
- public CreateLandingPad
- public CreateLaunderInvariantGroup
- public CreateLifetimeEnd
- public CreateLifetimeStart
- public CreateLoad
- public CreateLoad
- public CreateLoad
- public CreateLogicalAnd
- public CreateLogicalOr
- public CreateLogicalOr
- public CreateMaskedGather
- public CreateMaskedLoad
- public CreateMaskedScatter
- public CreateMaskedStore
- public CreateMaxNum
- public CreateMaximum
- public CreateMemCpy
- public CreateMemCpy
- public CreateMemCpyInline
- public CreateMemMove
- public CreateMemMove
- public CreateMemSet
- public CreateMemSet
- public CreateMemSetInline
- public CreateMemTransferInst
- public CreateMinNum
- public CreateMinimum
- public CreateMul
- public CreateMulReduce
- public CreateNAryOp
- public CreateNSWAdd
- public CreateNSWMul
- public CreateNSWNeg
- public CreateNSWSub
- public CreateNUWAdd
- public CreateNUWMul
- public CreateNUWNeg
- public CreateNUWSub
- public CreateNeg
- public CreateNoAliasScopeDeclaration
- public CreateNoAliasScopeDeclaration
- public CreateNot
- public CreateOr
- public CreateOr
- public CreateOr
- public CreateOr
- public CreateOrReduce
- public CreatePHI
- public CreatePointerBitCastOrAddrSpaceCast
- public CreatePointerCast
- public CreatePreserveArrayAccessIndex
- public CreatePreserveStructAccessIndex
- public CreatePreserveUnionAccessIndex
- public CreatePtrDiff
- public CreatePtrToInt
- public CreateResume
- public CreateRet
- public CreateRetVoid
- public CreateSDiv
- public CreateSExt
- public CreateSExtOrBitCast
- public CreateSExtOrTrunc
- public CreateSIToFP
- public CreateSRem
- public CreateSelect
- public CreateShl
- public CreateShl
- public CreateShl
- public CreateShuffleVector
- public CreateShuffleVector
- public CreateShuffleVector
- public CreateStepVector
- public CreateStore
- public CreateStripInvariantGroup
- public CreateStructGEP
- public CreateSub
- public CreateSwitch
- public CreateTrunc
- public CreateTruncOrBitCast
- public CreateUDiv
- public CreateUIToFP
- public CreateURem
- public CreateUnOp
- public CreateUnaryIntrinsic
- public CreateUnreachable
- public CreateVAArg
- public CreateVScale
- public CreateVectorReverse
- public CreateVectorSplat
- public CreateVectorSplat
- public CreateVectorSplice
- public CreateXor
- public CreateXor
- public CreateXor
- public CreateXorReduce
- public CreateZExt
- public CreateZExtOrBitCast
- public CreateZExtOrTrunc
- public GetInsertBlock
- public GetInsertPoint
- public Insert
- public Insert
- public Insert
- public SetCurrentDebugLocation
- public SetInsertPoint
- public SetInsertPoint
- public SetInsertPoint
- public SetInstDebugLocation
- public clearFastMathFlags
- public getBFloatTy
- public getContext
- public getCurrentDebugLocation
- public getCurrentFunctionReturnType
- public getDefaultConstrainedExcept
- public getDefaultConstrainedRounding
- public getDefaultFPMathTag
- public getDoubleTy
- public getFalse
- public getFastMathFlags
- public getFastMathFlags
- public getFloatTy
- public getHalfTy
- public getInt
- public getInt1
- public getInt128Ty
- public getInt16
- public getInt16Ty
- public getInt1Ty
- public getInt32
- public getInt32Ty
- public getInt64
- public getInt64Ty
- public getInt8
- public getInt8PtrTy
- public getInt8Ty
- public getIntN
- public getIntNTy
- public getIntPtrTy
- public getIsFPConstrained
- public getPtrTy
- public getTrue
- public getVoidTy
- public restoreIP
- public saveAndClearIP
- public saveIP
- public setConstrainedFPCallAttr
- public setConstrainedFPFunctionAttr
- public setDefaultConstrainedExcept
- public setDefaultConstrainedRounding
- public setDefaultFPMathTag
- public setDefaultOperandBundles
- public setFastMathFlags
- public setIsFPConstrained
Methods
¶IRBuilder<FolderTy, InserterTy>(
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,
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)
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)
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)
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)
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)
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)
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>&)
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()
InserterTy& getInserter()
Declared at: llvm/include/llvm/IR/IRBuilder.h:2543