InstVisitor that collects indirect calls or vtable address instructions.

Synopsis

Declared in <llvm/Analysis/IndirectCallVisitor.h>

struct PGOIndirectCallVisitor
    : InstVisitor<PGOIndirectCallVisitor>

Description

Finds indirect calls or instructions that give a vtable value, depending on Type.

Base Classes

Name

Description

InstVisitor<PGOIndirectCallVisitor>

Base class for instruction visitors

Enums

Name

Description

InstructionType

Kind of instruction this visitor collects while walking a function.

Member Functions

Name

Description

PGOIndirectCallVisitor [constructor]

Construct a visitor that collects instructions of the given Type.

visit

visit overloads

visitAShr

Create or visit an arithmetic right‐shift (ashr) instruction.

visitAdd

Create or visit an integer addition (add) instruction.

visitAddrSpaceCast

Visit an addrspacecast that changes a pointer's address space.

visitAddrSpaceCastInst

Visit an AddrSpaceCastInst; defaults to visitCastInst.

visitAlloca

Visit an alloca that allocates stack memory.

visitAllocaInst

Visit an AllocaInst; defaults to visitUnaryInstruction.

visitAnd

Create or visit a bitwise AND (and) instruction.

visitAtomicCmpXchg

Visit an atomic compare‐and‐exchange (cmpxchg) instruction.

visitAtomicCmpXchgInst

Visit an AtomicCmpXchgInst; defaults to visitInstruction.

visitAtomicRMW

Visit an atomic read‐modify‐write (atomicrmw) instruction.

visitAtomicRMWInst

Visit an AtomicRMWInst; defaults to visitInstruction.

visitBasicBlock

Called when beginning visitation of basic block BB.

visitBinaryOperator

Visit a BinaryOperator; defaults to visitInstruction.

visitBitCast

Visit a bitcast that reinterprets bits between types of equal size.

visitBitCastInst

Visit a BitCastInst; defaults to visitCastInst.

visitCall

Visit a call that invokes a function.

visitCallBase

Record an indirect call, and optionally its vtable address.

visitCallBr

Visit a callbr call‐site terminator with additional transfer labels.

visitCallBrInst

Visit a CallBrInst; defaults to visitCallBase.

visitCallInst

Visit a CallInst; defaults to visitCallBase.

visitCastInst

Visit a CastInst; defaults to visitUnaryInstruction.

visitCatchPad

Visit a catchpad that begins a catch funclet.

visitCatchPadInst

Visit a CatchPadInst; defaults to visitFuncletPadInst.

visitCatchRet

Visit a catchret that exits a catch funclet pad.

visitCatchReturnInst

Visit a CatchReturnInst; defaults to visitTerminator.

visitCatchSwitch

Visit a catchswitch that dispatches among catch pads.

visitCatchSwitchInst

Visit a CatchSwitchInst; defaults to visitTerminator.

visitCleanupPad

Visit a cleanuppad that begins a cleanup funclet.

visitCleanupPadInst

Visit a CleanupPadInst; defaults to visitFuncletPadInst.

visitCleanupRet

Visit a cleanupret that exits a cleanup funclet pad.

visitCleanupReturnInst

Visit a CleanupReturnInst; defaults to visitTerminator.

visitCmpInst

Visit a CmpInst; defaults to visitInstruction.

visitCondBr

Visit a conditional branch that chooses between two successors.

visitCondBrInst

Visit a conditional BranchInst; defaults to visitTerminator.

visitExtractElement

Visit an extractelement that pulls one element from a vector.

visitExtractElementInst

Visit an ExtractElementInst; defaults to visitInstruction.

visitExtractValue

Visit an extractvalue that pulls a field from an aggregate.

visitExtractValueInst

Visit an ExtractValueInst; defaults to visitUnaryInstruction.

visitFAdd

Create or visit a floating‐point addition (fadd) instruction.

visitFCmp

Visit an fcmp floating‐point comparison instruction.

visitFCmpInst

Visit an FCmpInst; defaults to visitCmpInst.

visitFDiv

Create or visit a floating‐point division (fdiv) instruction.

visitFMul

Create or visit a floating‐point multiplication (fmul) instruction.

visitFNeg

Create or visit a floating‐point negation (fneg) instruction.

visitFPBinaryOperator

Visit an FPBinaryOperator; defaults to visitBinaryOperator.

visitFPExt

Visit an fpext that extends a floating‐point value.

visitFPExtInst

Visit an FPExtInst; defaults to visitCastInst.

visitFPToSI

Visit an fptosi that converts floating‐point to signed integer.

visitFPToSIInst

Visit an FPToSIInst; defaults to visitCastInst.

visitFPToUI

Visit an fptoui that converts floating‐point to unsigned integer.

visitFPToUIInst

Visit an FPToUIInst; defaults to visitCastInst.

visitFPTrunc

Visit an fptrunc that narrows a floating‐point value.

visitFPTruncInst

Visit an FPTruncInst; defaults to visitCastInst.

visitFPUnaryOperator

Visit an FPUnaryOperator; defaults to visitUnaryOperator.

visitFRem

Create or visit a floating‐point remainder (frem) instruction.

visitFSub

Create or visit a floating‐point subtraction (fsub) instruction.

visitFence

Visit a fence that orders memory operations.

visitFenceInst

Visit a FenceInst; defaults to visitInstruction.

visitFreeze

Visit a freeze that replaces undef or poison with a fixed value.

visitFreezeInst

Visit a FreezeInst; defaults to visitInstruction.

visitFuncletPadInst

Visit a FuncletPadInst; defaults to visitInstruction.

visitFunction

Called when beginning visitation of function F.

visitGetElementPtr

Visit a getelementptr that computes an address within an aggregate.

visitGetElementPtrInst

Visit a GetElementPtrInst; defaults to visitInstruction.

visitICmp

Visit an icmp integer comparison instruction.

visitICmpInst

Visit an ICmpInst; defaults to visitCmpInst.

visitIndirectBr

Visit an indirect branch through an address operand.

visitIndirectBrInst

Visit an IndirectBrInst; defaults to visitTerminator.

visitInsertElement

Visit an insertelement that inserts one element into a vector.

visitInsertElementInst

Visit an InsertElementInst; defaults to visitInstruction.

visitInsertValue

Visit an insertvalue that inserts a field into an aggregate.

visitInsertValueInst

Visit an InsertValueInst; defaults to visitInstruction.

visitInstruction

Default handler for instructions not handled by a more specific visitor.

visitIntToPtr

Visit an inttoptr that converts an integer to a pointer.

visitIntToPtrInst

Visit an IntToPtrInst; defaults to visitCastInst.

visitIntrinsicInst

Visit an IntrinsicInst; defaults to visitCallInst.

visitInvoke

Visit an invoke that calls a function with an exceptional continuation.

visitInvokeInst

Visit an InvokeInst; defaults to visitCallBase.

visitLShr

Create or visit a logical right‐shift (lshr) instruction.

visitLandingPad

Visit a landingpad that receives an exception in an invoke unwind edge.

visitLandingPadInst

Visit a LandingPadInst; defaults to visitInstruction.

visitLoad

Visit a load that reads from memory.

visitLoadInst

Visit a LoadInst; defaults to visitUnaryInstruction.

visitMemCpyInst

Visit a MemCpyInst; defaults to visitMemTransferInst.

visitMemIntrinsic

Visit a MemIntrinsic; defaults to visitIntrinsicInst.

visitMemMoveInst

Visit a MemMoveInst; defaults to visitMemTransferInst.

visitMemSetInst

Visit a MemSetInst; defaults to visitMemIntrinsic.

visitMemSetPatternInst

Visit a MemSetPatternInst; defaults to visitIntrinsicInst.

visitMemTransferInst

Visit a MemTransferInst; defaults to visitMemIntrinsic.

visitModule

Called when beginning visitation of module M.

visitMul

Create or visit an integer multiplication (mul) instruction.

visitOr

Create or visit a bitwise OR (or) instruction.

visitPHI

Visit a phi node that merges values from predecessor blocks.

visitPHINode

Visit a PHINode; defaults to visitInstruction.

visitPtrToAddr

Visit a ptrtoaddr that converts a pointer to an address integer.

visitPtrToAddrInst

Visit a PtrToAddrInst; defaults to visitCastInst.

visitPtrToInt

Visit a ptrtoint that bitcasts a pointer to an integer.

visitPtrToIntInst

Visit a PtrToIntInst; defaults to visitCastInst.

visitResume

Visit a resume that continues unwinding of an exception.

visitResumeInst

Visit a ResumeInst; defaults to visitTerminator.

visitRet

Visit a ret terminator that returns from the current function.

visitReturnInst

Visit a ReturnInst; defaults to visitTerminator.

visitSDiv

Create or visit a signed integer division (sdiv) instruction.

visitSExt

Visit a sext that sign‐extends an integer value.

visitSExtInst

Visit an SExtInst; defaults to visitCastInst.

visitSIToFP

Visit a sitofp that converts signed integer to floating‐point.

visitSIToFPInst

Visit an SIToFPInst; defaults to visitCastInst.

visitSRem

Create or visit a signed integer remainder (srem) instruction.

visitSelect

Visit a select that chooses one of two values by a condition.

visitSelectInst

Visit a SelectInst; defaults to visitInstruction.

visitShl

Create or visit a logical left‐shift (shl) instruction.

visitShuffleVector

Visit a shufflevector that permutes elements from two vectors.

visitShuffleVectorInst

Visit a ShuffleVectorInst; defaults to visitInstruction.

visitStore

Visit a store that writes a value to memory.

visitStoreInst

Visit a StoreInst; defaults to visitInstruction.

visitSub

Create or visit an integer subtraction (sub) instruction.

visitSwitch

Visit a switch that dispatches on an integer value.

visitSwitchInst

Visit a SwitchInst; defaults to visitTerminator.

visitTerminator

Visit a terminator instruction; defaults to visitInstruction.

visitTrunc

Visit a trunc that narrows an integer value.

visitTruncInst

Visit a TruncInst; defaults to visitCastInst.

visitUDiv

Create or visit an unsigned integer division (udiv) instruction.

visitUIToFP

Visit a uitofp that converts unsigned integer to floating‐point.

visitUIToFPInst

Visit a UIToFPInst; defaults to visitCastInst.

visitURem

Create or visit an unsigned integer remainder (urem) instruction.

visitUnaryInstruction

Visit a UnaryInstruction; defaults to visitInstruction.

visitUnaryOperator

Visit a UnaryOperator; defaults to visitUnaryInstruction.

visitUncondBr

Visit an unconditional branch to a single successor.

visitUncondBrInst

Visit an unconditional BranchInst; defaults to visitTerminator.

visitUnreachable

Visit an unreachable marker for code that must never execute.

visitUnreachableInst

Visit an UnreachableInst; defaults to visitTerminator.

visitUserOp1

Visit a UserOp1 placeholder that may be used internally in a pass.

visitUserOp2

Visit a UserOp2 placeholder that is internal to passes only.

visitVAArg

Visit a vaarg that reads the next variable argument.

visitVAArgInst

Visit a VAArgInst; defaults to visitUnaryInstruction.

visitVACopyInst

Visit a VACopyInst; defaults to visitIntrinsicInst.

visitVAEndInst

Visit a VAEndInst; defaults to visitIntrinsicInst.

visitVAStartInst

Visit a VAStartInst; defaults to visitIntrinsicInst.

visitXor

Create or visit a bitwise XOR (xor) instruction.

visitZExt

Visit a zext that zero‐extends an integer value.

visitZExtInst

Visit a ZExtInst; defaults to visitCastInst.

Static Member Functions

Name

Description

tryGetVTableInstruction

Try to recover the vtable load feeding an indirect call.

Data Members

Name

Description

IndirectCalls

Indirect call sites discovered during the visit.

ProfiledAddresses

Vtable address instructions discovered when collecting kVTableVal.

Created with MrDocs