class CallBrInst

Declaration

class CallBrInst : public CallBase { /* full declaration omitted */ };

Description

CallBr instruction, tracking function calls that may not return control but instead transfer it to a third location. The SubclassData field is used to hold the calling convention of the call.

Declared at: llvm/include/llvm/IR/Instructions.h:3985

Inherits from: CallBase

Member Variables

private unsigned int NumIndirectDests

Inherited from CallBase:

protected Attrs
protected FTy
protected static CalledOperandOpEndIdx = -1

Inherited from Value:

protected SubclassOptionalData
protected NumUserOperands
protected IsUsedByMD
protected HasName
protected HasMetadata
protected HasHungOffUses
protected HasDescriptor
public static MaxAlignmentExponent = 32
public static MaximumAlignment = 1ULL << MaxAlignmentExponent

Method Overview

  • private inline CallBrInst(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, int NumOperands, const llvm::Twine & NameStr, llvm::Instruction * InsertBefore)
  • private inline CallBrInst(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, int NumOperands, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • private CallBrInst(const llvm::CallBrInst & BI)
  • private static int ComputeNumOperands(int NumArgs, int NumIndirectDests, int NumBundleInputs = 0)
  • public static llvm::CallBrInst * Create(llvm::FunctionCallee Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles = None, const llvm::Twine & NameStr = "", llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::CallBrInst * Create(llvm::CallBrInst * CBI, ArrayRef<llvm::OperandBundleDef> Bundles, llvm::Instruction * InsertPt = nullptr)
  • public static llvm::CallBrInst * Create(llvm::FunctionCallee Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::CallBrInst * Create(llvm::FunctionCallee Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::CallBrInst * Create(llvm::FunctionCallee Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, const llvm::Twine & NameStr, llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::CallBrInst * Create(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::CallBrInst * Create(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::CallBrInst * Create(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles = None, const llvm::Twine & NameStr = "", llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::CallBrInst * Create(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, const llvm::Twine & NameStr, llvm::Instruction * InsertBefore = nullptr)
  • public static bool classof(const llvm::Value * V)
  • public static bool classof(const llvm::Instruction * I)
  • protected llvm::CallBrInst * cloneImpl() const
  • public llvm::BlockAddress * getBlockAddressForIndirectDest(unsigned int DestNo) const
  • public llvm::BasicBlock * getDefaultDest() const
  • public llvm::BasicBlock * getIndirectDest(unsigned int i) const
  • public llvm::Value * getIndirectDestLabel(unsigned int i) const
  • public llvm::Value * getIndirectDestLabelUse(unsigned int i) const
  • public SmallVector<llvm::BasicBlock *, 16> getIndirectDests() const
  • public unsigned int getNumIndirectDests() const
  • public unsigned int getNumSuccessors() const
  • public llvm::BasicBlock * getSuccessor(unsigned int i) const
  • private void init(llvm::FunctionType * FTy, llvm::Value * Func, llvm::BasicBlock * DefaultDest, ArrayRef<llvm::BasicBlock *> IndirectDests, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, const llvm::Twine & NameStr)
  • public void setDefaultDest(llvm::BasicBlock * B)
  • public void setIndirectDest(unsigned int i, llvm::BasicBlock * B)
  • private template <typename Bitfield>void setSubclassData(typename Bitfield::Type Value)
  • public void setSuccessor(unsigned int i, llvm::BasicBlock * NewSucc)

Inherited from CallBase:

Inherited from Instruction:

Inherited from User:

Inherited from Value:

Methods

inline CallBrInst(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    ArrayRef<llvm::OperandBundleDef> Bundles,
    int NumOperands,
    const llvm::Twine& NameStr,
    llvm::Instruction* InsertBefore)

Description

Construct a CallBrInst given a range of arguments. Construct a CallBrInst from a range of arguments

Declared at: llvm/include/llvm/IR/Instructions.h:3994

Parameters

llvm::FunctionType* Ty
llvm::Value* Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
ArrayRef<llvm::OperandBundleDef> Bundles
int NumOperands
const llvm::Twine& NameStr
llvm::Instruction* InsertBefore

inline CallBrInst(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    ArrayRef<llvm::OperandBundleDef> Bundles,
    int NumOperands,
    const llvm::Twine& NameStr,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/Instructions.h:4000

Parameters

llvm::FunctionType* Ty
llvm::Value* Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
ArrayRef<llvm::OperandBundleDef> Bundles
int NumOperands
const llvm::Twine& NameStr
llvm::BasicBlock* InsertAtEnd

CallBrInst(const llvm::CallBrInst& BI)

Declared at: llvm/include/llvm/IR/Instructions.h:3989

Parameters

const llvm::CallBrInst& BI

static int ComputeNumOperands(
    int NumArgs,
    int NumIndirectDests,
    int NumBundleInputs = 0)

Description

Compute the number of operands to allocate.

Declared at: llvm/include/llvm/IR/Instructions.h:4011

Parameters

int NumArgs
int NumIndirectDests
int NumBundleInputs = 0

static llvm::CallBrInst* Create(
    llvm::FunctionCallee Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    ArrayRef<llvm::OperandBundleDef> Bundles =
        None,
    const llvm::Twine& NameStr = "",
    llvm::Instruction* InsertBefore = nullptr)

Declared at: llvm/include/llvm/IR/Instructions.h:4086

Parameters

llvm::FunctionCallee Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
ArrayRef<llvm::OperandBundleDef> Bundles = None
const llvm::Twine& NameStr = ""
llvm::Instruction* InsertBefore = nullptr

static llvm::CallBrInst* Create(
    llvm::CallBrInst* CBI,
    ArrayRef<llvm::OperandBundleDef> Bundles,
    llvm::Instruction* InsertPt = nullptr)

Description

Create a clone of \p CBI with a different set of operand bundles and insert it before \p InsertPt. The returned callbr instruction is identical to \p CBI in every way except that the operand bundles for the new instruction are set to the operand bundles in \p Bundles.

Declared at: llvm/include/llvm/IR/Instructions.h:4120

Parameters

llvm::CallBrInst* CBI
ArrayRef<llvm::OperandBundleDef> Bundles
llvm::Instruction* InsertPt = nullptr

static llvm::CallBrInst* Create(
    llvm::FunctionCallee Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    ArrayRef<llvm::OperandBundleDef> Bundles,
    const llvm::Twine& NameStr,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/Instructions.h:4104

Parameters

llvm::FunctionCallee Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
ArrayRef<llvm::OperandBundleDef> Bundles
const llvm::Twine& NameStr
llvm::BasicBlock* InsertAtEnd

static llvm::CallBrInst* Create(
    llvm::FunctionCallee Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    const llvm::Twine& NameStr,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/Instructions.h:4096

Parameters

llvm::FunctionCallee Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
const llvm::Twine& NameStr
llvm::BasicBlock* InsertAtEnd

static llvm::CallBrInst* Create(
    llvm::FunctionCallee Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    const llvm::Twine& NameStr,
    llvm::Instruction* InsertBefore = nullptr)

Declared at: llvm/include/llvm/IR/Instructions.h:4078

Parameters

llvm::FunctionCallee Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
const llvm::Twine& NameStr
llvm::Instruction* InsertBefore = nullptr

static llvm::CallBrInst* Create(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    ArrayRef<llvm::OperandBundleDef> Bundles,
    const llvm::Twine& NameStr,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/Instructions.h:4063

Parameters

llvm::FunctionType* Ty
llvm::Value* Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
ArrayRef<llvm::OperandBundleDef> Bundles
const llvm::Twine& NameStr
llvm::BasicBlock* InsertAtEnd

static llvm::CallBrInst* Create(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    const llvm::Twine& NameStr,
    llvm::BasicBlock* InsertAtEnd)

Declared at: llvm/include/llvm/IR/Instructions.h:4052

Parameters

llvm::FunctionType* Ty
llvm::Value* Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
const llvm::Twine& NameStr
llvm::BasicBlock* InsertAtEnd

static llvm::CallBrInst* Create(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    ArrayRef<llvm::OperandBundleDef> Bundles =
        None,
    const llvm::Twine& NameStr = "",
    llvm::Instruction* InsertBefore = nullptr)

Declared at: llvm/include/llvm/IR/Instructions.h:4036

Parameters

llvm::FunctionType* Ty
llvm::Value* Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
ArrayRef<llvm::OperandBundleDef> Bundles = None
const llvm::Twine& NameStr = ""
llvm::Instruction* InsertBefore = nullptr

static llvm::CallBrInst* Create(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    const llvm::Twine& NameStr,
    llvm::Instruction* InsertBefore = nullptr)

Declared at: llvm/include/llvm/IR/Instructions.h:4025

Parameters

llvm::FunctionType* Ty
llvm::Value* Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
const llvm::Twine& NameStr
llvm::Instruction* InsertBefore = nullptr

static bool classof(const llvm::Value* V)

Declared at: llvm/include/llvm/IR/Instructions.h:4180

Parameters

const llvm::Value* V

static bool classof(const llvm::Instruction* I)

Declared at: llvm/include/llvm/IR/Instructions.h:4177

Parameters

const llvm::Instruction* I

llvm::CallBrInst* cloneImpl() const

Declared at: llvm/include/llvm/IR/Instructions.h:4022

llvm::BlockAddress*
getBlockAddressForIndirectDest(
    unsigned int DestNo) const

Declared at: llvm/include/llvm/IR/Instructions.h:4174

Parameters

unsigned int DestNo

llvm::BasicBlock* getDefaultDest() const

Declared at: llvm/include/llvm/IR/Instructions.h:4141

llvm::BasicBlock* getIndirectDest(
    unsigned int i) const

Declared at: llvm/include/llvm/IR/Instructions.h:4144

Parameters

unsigned int i

llvm::Value* getIndirectDestLabel(
    unsigned int i) const

Description

getIndirectDestLabel - Return the i-th indirect dest label.

Declared at: llvm/include/llvm/IR/Instructions.h:4130

Parameters

unsigned int i

llvm::Value* getIndirectDestLabelUse(
    unsigned int i) const

Declared at: llvm/include/llvm/IR/Instructions.h:4135

Parameters

unsigned int i

SmallVector<llvm::BasicBlock*, 16>
getIndirectDests() const

Declared at: llvm/include/llvm/IR/Instructions.h:4147

unsigned int getNumIndirectDests() const

Description

Return the number of callbr indirect dest labels.

Declared at: llvm/include/llvm/IR/Instructions.h:4126

unsigned int getNumSuccessors() const

Declared at: llvm/include/llvm/IR/Instructions.h:4172

llvm::BasicBlock* getSuccessor(
    unsigned int i) const

Declared at: llvm/include/llvm/IR/Instructions.h:4160

Parameters

unsigned int i

void init(
    llvm::FunctionType* FTy,
    llvm::Value* Func,
    llvm::BasicBlock* DefaultDest,
    ArrayRef<llvm::BasicBlock*> IndirectDests,
    ArrayRef<llvm::Value*> Args,
    ArrayRef<llvm::OperandBundleDef> Bundles,
    const llvm::Twine& NameStr)

Declared at: llvm/include/llvm/IR/Instructions.h:4006

Parameters

llvm::FunctionType* FTy
llvm::Value* Func
llvm::BasicBlock* DefaultDest
ArrayRef<llvm::BasicBlock*> IndirectDests
ArrayRef<llvm::Value*> Args
ArrayRef<llvm::OperandBundleDef> Bundles
const llvm::Twine& NameStr

void setDefaultDest(llvm::BasicBlock* B)

Declared at: llvm/include/llvm/IR/Instructions.h:4153

Parameters

llvm::BasicBlock* B

void setIndirectDest(unsigned int i,
                     llvm::BasicBlock* B)

Declared at: llvm/include/llvm/IR/Instructions.h:4156

Parameters

unsigned int i
llvm::BasicBlock* B

template <typename Bitfield>
void setSubclassData(
    typename Bitfield::Type Value)

Declared at: llvm/include/llvm/IR/Instructions.h:4188

Templates

Bitfield

Parameters

typename Bitfield::Type Value

void setSuccessor(unsigned int i,
                  llvm::BasicBlock* NewSucc)

Declared at: llvm/include/llvm/IR/Instructions.h:4166

Parameters

unsigned int i
llvm::BasicBlock* NewSucc