12#ifndef LLVM_ANALYSIS_INDIRECTCALLVISITOR_H
13#define LLVM_ANALYSIS_INDIRECTCALLVISITOR_H
31 if (!Call.isIndirectCall())
41 LoadInst *LI = dyn_cast<LoadInst>(Call.getCalledOperand());
53 Value *VTablePtr =
Ptr->stripInBoundsConstantOffsets();
65 if (VTablePtr !=
nullptr && isa<Instruction>(VTablePtr))
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...
Base class for instruction visitors.
void visit(Iterator Start, Iterator End)
An instruction for reading from memory.
Value * getPointerOperand()
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM Value Representation.
This is an optimization pass for GlobalISel generic memory operations.
std::vector< CallBase * > findIndirectCalls(Function &F)
std::vector< Instruction * > findVTableAddrs(Function &F)
std::vector< CallBase * > IndirectCalls
PGOIndirectCallVisitor(InstructionType Type)
std::vector< Instruction * > ProfiledAddresses
void visitCallBase(CallBase &Call)