class InvokeInst

Declaration

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

Description

Invoke instruction. The SubclassData field is used to hold the calling convention of the call.

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

Inherits from: CallBase

Member Variables

private static const int NumExtraOperands = 2
The number of operands for this call beyond the called function, arguments, and operand bundles.
private static const int NormalDestOpEndIdx = -3
The index from the end of the operand array to the normal destination.
private static const int UnwindDestOpEndIdx = -2
The index from the end of the operand array to the unwind destination.

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 static int ComputeNumOperands(int NumArgs, int NumBundleInputs = 0)
  • public static llvm::InvokeInst * Create(llvm::InvokeInst * II, ArrayRef<llvm::OperandBundleDef> Bundles, llvm::Instruction * InsertPt = nullptr)
  • public static llvm::InvokeInst * Create(llvm::FunctionCallee Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::InvokeInst * Create(llvm::FunctionCallee Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::InvokeInst * Create(llvm::FunctionCallee Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles = None, const llvm::Twine & NameStr = "", llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::InvokeInst * Create(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, const llvm::Twine & NameStr, llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::InvokeInst * Create(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles = None, const llvm::Twine & NameStr = "", llvm::Instruction * InsertBefore = nullptr)
  • public static llvm::InvokeInst * Create(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::InvokeInst * Create(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • public static llvm::InvokeInst * Create(llvm::FunctionCallee Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, const llvm::Twine & NameStr, llvm::Instruction * InsertBefore = nullptr)
  • private inline InvokeInst(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, int NumOperands, const llvm::Twine & NameStr, llvm::Instruction * InsertBefore)
  • private inline InvokeInst(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, int NumOperands, const llvm::Twine & NameStr, llvm::BasicBlock * InsertAtEnd)
  • private InvokeInst(const llvm::InvokeInst & BI)
  • public static bool classof(const llvm::Instruction * I)
  • public static bool classof(const llvm::Value * V)
  • protected llvm::InvokeInst * cloneImpl() const
  • public llvm::LandingPadInst * getLandingPadInst() const
  • public llvm::BasicBlock * getNormalDest() const
  • public unsigned int getNumSuccessors() const
  • public llvm::BasicBlock * getSuccessor(unsigned int i) const
  • public llvm::BasicBlock * getUnwindDest() const
  • private void init(llvm::FunctionType * Ty, llvm::Value * Func, llvm::BasicBlock * IfNormal, llvm::BasicBlock * IfException, ArrayRef<llvm::Value *> Args, ArrayRef<llvm::OperandBundleDef> Bundles, const llvm::Twine & NameStr)
  • public void setNormalDest(llvm::BasicBlock * B)
  • private template <typename Bitfield>void setSubclassData(typename Bitfield::Type Value)
  • public void setSuccessor(unsigned int i, llvm::BasicBlock * NewSucc)
  • public void setUnwindDest(llvm::BasicBlock * B)

Inherited from CallBase:

Inherited from Instruction:

Inherited from User:

Inherited from Value:

Methods

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

Description

Compute the number of operands to allocate.

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

Parameters

int NumArgs
int NumBundleInputs = 0

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

Description

Create a clone of \p II with a different set of operand bundles and insert it before \p InsertPt. The returned invoke instruction is identical to \p II 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:3904

Parameters

llvm::InvokeInst* II
ArrayRef<llvm::OperandBundleDef> Bundles
llvm::Instruction* InsertPt = nullptr

static llvm::InvokeInst* Create(
    llvm::FunctionCallee Func,
    llvm::BasicBlock* IfNormal,
    llvm::BasicBlock* IfException,
    ArrayRef<llvm::Value*> Args,
    ArrayRef<llvm::OperandBundleDef> Bundles,
    const llvm::Twine& NameStr,
    llvm::BasicBlock* InsertAtEnd)

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

Parameters

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

static llvm::InvokeInst* Create(
    llvm::FunctionCallee Func,
    llvm::BasicBlock* IfNormal,
    llvm::BasicBlock* IfException,
    ArrayRef<llvm::Value*> Args,
    const llvm::Twine& NameStr,
    llvm::BasicBlock* InsertAtEnd)

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

Parameters

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

static llvm::InvokeInst* Create(
    llvm::FunctionCallee Func,
    llvm::BasicBlock* IfNormal,
    llvm::BasicBlock* IfException,
    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:3874

Parameters

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

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

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

Parameters

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

static llvm::InvokeInst* Create(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* IfNormal,
    llvm::BasicBlock* IfException,
    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:3830

Parameters

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

static llvm::InvokeInst* Create(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* IfNormal,
    llvm::BasicBlock* IfException,
    ArrayRef<llvm::Value*> Args,
    const llvm::Twine& NameStr,
    llvm::BasicBlock* InsertAtEnd)

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

Parameters

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

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

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

Parameters

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

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

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

Parameters

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

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

Description

Construct an InvokeInst given a range of arguments. Construct an InvokeInst from a range of arguments

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

Parameters

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

inline InvokeInst(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* IfNormal,
    llvm::BasicBlock* IfException,
    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:3797

Parameters

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

InvokeInst(const llvm::InvokeInst& BI)

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

Parameters

const llvm::InvokeInst& BI

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

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

Parameters

const llvm::Instruction* I

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

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

Parameters

const llvm::Value* V

llvm::InvokeInst* cloneImpl() const

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

llvm::LandingPadInst* getLandingPadInst() const

Description

Get the landingpad instruction from the landing pad block (the unwind destination).

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

llvm::BasicBlock* getNormalDest() const

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

unsigned int getNumSuccessors() const

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

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

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

Parameters

unsigned int i

llvm::BasicBlock* getUnwindDest() const

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

void init(
    llvm::FunctionType* Ty,
    llvm::Value* Func,
    llvm::BasicBlock* IfNormal,
    llvm::BasicBlock* IfException,
    ArrayRef<llvm::Value*> Args,
    ArrayRef<llvm::OperandBundleDef> Bundles,
    const llvm::Twine& NameStr)

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

Parameters

llvm::FunctionType* Ty
llvm::Value* Func
llvm::BasicBlock* IfNormal
llvm::BasicBlock* IfException
ArrayRef<llvm::Value*> Args
ArrayRef<llvm::OperandBundleDef> Bundles
const llvm::Twine& NameStr

void setNormalDest(llvm::BasicBlock* B)

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

Parameters

llvm::BasicBlock* B

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

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

Templates

Bitfield

Parameters

typename Bitfield::Type Value

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

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

Parameters

unsigned int i
llvm::BasicBlock* NewSucc

void setUnwindDest(llvm::BasicBlock* B)

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

Parameters

llvm::BasicBlock* B