class CFLGraphBuilder::GetEdgesVisitor
Declaration
class CFLGraphBuilder::GetEdgesVisitor { /* full declaration omitted */ };
Description
Gets the edges our graph should have, based on an Instruction*
Declared at: llvm/lib/Analysis/CFLGraph.h:174
Member Variables
- private CFLAA& AA
- private const llvm::DataLayout& DL
- private const llvm::TargetLibraryInfo& TLI
- private llvm::cflaa::CFLGraph& Graph
- private SmallVectorImpl<llvm::Value*>& ReturnValues
Method Overview
- public GetEdgesVisitor(CFLGraphBuilder<CFLAA> & Builder, const llvm::DataLayout & DL)
- private void addAssignEdge(llvm::Value * From, llvm::Value * To, int64_t Offset = 0)
- private void addDerefEdge(llvm::Value * From, llvm::Value * To, bool IsRead)
- private void addLoadEdge(llvm::Value * From, llvm::Value * To)
- private void addNode(llvm::Value * Val, llvm::cflaa::AliasAttrs Attr = std::bitset<32>())
- private void addStoreEdge(llvm::Value * From, llvm::Value * To)
- private static bool getPossibleTargets(llvm::CallBase & Call, SmallVectorImpl<llvm::Function *> & Output)
- private static bool hasUsefulEdges(llvm::ConstantExpr * CE)
- public static bool isFunctionExternal(llvm::Function * Fn)
- public bool tryInterproceduralAnalysis(llvm::CallBase & Call, const SmallVectorImpl<llvm::Function *> & Fns)
- public void visitAllocaInst(llvm::AllocaInst & Inst)
- public void visitAtomicCmpXchgInst(llvm::AtomicCmpXchgInst & Inst)
- public void visitAtomicRMWInst(llvm::AtomicRMWInst & Inst)
- public void visitBinaryOperator(llvm::BinaryOperator & Inst)
- public void visitCallBase(llvm::CallBase & Call)
- public void visitCastInst(llvm::CastInst & Inst)
- public void visitConstantExpr(llvm::ConstantExpr * CE)
- public void visitExtractElementInst(llvm::ExtractElementInst & Inst)
- public void visitExtractValueInst(llvm::ExtractValueInst & Inst)
- public void visitFreezeInst(llvm::FreezeInst & Inst)
- public void visitGEP(llvm::GEPOperator & GEPOp)
- public void visitGetElementPtrInst(llvm::GetElementPtrInst & Inst)
- public void visitInsertElementInst(llvm::InsertElementInst & Inst)
- public void visitInsertValueInst(llvm::InsertValueInst & Inst)
- public void visitInstruction(llvm::Instruction &)
- public void visitIntToPtrInst(llvm::IntToPtrInst & Inst)
- public void visitLandingPadInst(llvm::LandingPadInst & Inst)
- public void visitLoadInst(llvm::LoadInst & Inst)
- public void visitPHINode(llvm::PHINode & Inst)
- public void visitPtrToIntInst(llvm::PtrToIntInst & Inst)
- public void visitReturnInst(llvm::ReturnInst & Inst)
- public void visitSelectInst(llvm::SelectInst & Inst)
- public void visitShuffleVectorInst(llvm::ShuffleVectorInst & Inst)
- public void visitStoreInst(llvm::StoreInst & Inst)
- public void visitUnaryOperator(llvm::UnaryOperator & Inst)
- public void visitVAArgInst(llvm::VAArgInst & Inst)
Methods
¶GetEdgesVisitor(CFLGraphBuilder<CFLAA>& Builder,
const llvm::DataLayout& DL)
GetEdgesVisitor(CFLGraphBuilder<CFLAA>& Builder,
const llvm::DataLayout& DL)
Declared at: llvm/lib/Analysis/CFLGraph.h:255
Parameters
- CFLGraphBuilder<CFLAA>& Builder
- const llvm::DataLayout& DL
¶void addAssignEdge(llvm::Value* From,
llvm::Value* To,
int64_t Offset = 0)
void addAssignEdge(llvm::Value* From,
llvm::Value* To,
int64_t Offset = 0)
Declared at: llvm/lib/Analysis/CFLGraph.h:219
Parameters
- llvm::Value* From
- llvm::Value* To
- int64_t Offset = 0
¶void addDerefEdge(llvm::Value* From,
llvm::Value* To,
bool IsRead)
void addDerefEdge(llvm::Value* From,
llvm::Value* To,
bool IsRead)
Declared at: llvm/lib/Analysis/CFLGraph.h:231
Parameters
- llvm::Value* From
- llvm::Value* To
- bool IsRead
¶void addLoadEdge(llvm::Value* From,
llvm::Value* To)
void addLoadEdge(llvm::Value* From,
llvm::Value* To)
Declared at: llvm/lib/Analysis/CFLGraph.h:251
Parameters
- llvm::Value* From
- llvm::Value* To
¶void addNode(llvm::Value* Val,
llvm::cflaa::AliasAttrs Attr =
std::bitset<32>())
void addNode(llvm::Value* Val,
llvm::cflaa::AliasAttrs Attr =
std::bitset<32>())
Declared at: llvm/lib/Analysis/CFLGraph.h:204
Parameters
- llvm::Value* Val
- llvm::cflaa::AliasAttrs Attr = std::bitset<32>()
¶void addStoreEdge(llvm::Value* From,
llvm::Value* To)
void addStoreEdge(llvm::Value* From,
llvm::Value* To)
Declared at: llvm/lib/Analysis/CFLGraph.h:252
Parameters
- llvm::Value* From
- llvm::Value* To
¶static bool getPossibleTargets(
llvm::CallBase& Call,
SmallVectorImpl<llvm::Function*>& Output)
static bool getPossibleTargets(
llvm::CallBase& Call,
SmallVectorImpl<llvm::Function*>& Output)
Declared at: llvm/lib/Analysis/CFLGraph.h:191
Parameters
- llvm::CallBase& Call
- SmallVectorImpl<llvm::Function*>& Output
¶static bool hasUsefulEdges(llvm::ConstantExpr* CE)
static bool hasUsefulEdges(llvm::ConstantExpr* CE)
Declared at: llvm/lib/Analysis/CFLGraph.h:182
Parameters
¶static bool isFunctionExternal(llvm::Function* Fn)
static bool isFunctionExternal(llvm::Function* Fn)
Declared at: llvm/lib/Analysis/CFLGraph.h:378
Parameters
- llvm::Function* Fn
¶bool tryInterproceduralAnalysis(
llvm::CallBase& Call,
const SmallVectorImpl<llvm::Function*>& Fns)
bool tryInterproceduralAnalysis(
llvm::CallBase& Call,
const SmallVectorImpl<llvm::Function*>& Fns)
Declared at: llvm/lib/Analysis/CFLGraph.h:382
Parameters
- llvm::CallBase& Call
- const SmallVectorImpl<llvm::Function*>& Fns
¶void visitAllocaInst(llvm::AllocaInst& Inst)
void visitAllocaInst(llvm::AllocaInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:351
Parameters
- llvm::AllocaInst& Inst
¶void visitAtomicCmpXchgInst(
llvm::AtomicCmpXchgInst& Inst)
void visitAtomicCmpXchgInst(
llvm::AtomicCmpXchgInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:306
Parameters
- llvm::AtomicCmpXchgInst& Inst
¶void visitAtomicRMWInst(llvm::AtomicRMWInst& Inst)
void visitAtomicRMWInst(llvm::AtomicRMWInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:312
Parameters
- llvm::AtomicRMWInst& Inst
¶void visitBinaryOperator(
llvm::BinaryOperator& Inst)
void visitBinaryOperator(
llvm::BinaryOperator& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:294
Parameters
- llvm::BinaryOperator& Inst
¶void visitCallBase(llvm::CallBase& Call)
void visitCallBase(llvm::CallBase& Call)
Declared at: llvm/lib/Analysis/CFLGraph.h:424
Parameters
- llvm::CallBase& Call
¶void visitCastInst(llvm::CastInst& Inst)
void visitCastInst(llvm::CastInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:282
Parameters
- llvm::CastInst& Inst
¶void visitConstantExpr(llvm::ConstantExpr* CE)
void visitConstantExpr(llvm::ConstantExpr* CE)
Declared at: llvm/lib/Analysis/CFLGraph.h:517
Parameters
¶void visitExtractElementInst(
llvm::ExtractElementInst& Inst)
void visitExtractElementInst(
llvm::ExtractElementInst& Inst)
Description
Because vectors/aggregates are immutable and unaddressable, there's nothing we can do to coax a value out of them, other than calling Extract{Element,Value}. We can effectively treat them as pointers to arbitrary memory locations we can store in and load from.
Declared at: llvm/lib/Analysis/CFLGraph.h:477
Parameters
- llvm::ExtractElementInst& Inst
¶void visitExtractValueInst(
llvm::ExtractValueInst& Inst)
void visitExtractValueInst(
llvm::ExtractValueInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:505
Parameters
- llvm::ExtractValueInst& Inst
¶void visitFreezeInst(llvm::FreezeInst& Inst)
void visitFreezeInst(llvm::FreezeInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:287
Parameters
- llvm::FreezeInst& Inst
¶void visitGEP(llvm::GEPOperator& GEPOp)
void visitGEP(llvm::GEPOperator& GEPOp)
Declared at: llvm/lib/Analysis/CFLGraph.h:323
Parameters
- llvm::GEPOperator& GEPOp
¶void visitGetElementPtrInst(
llvm::GetElementPtrInst& Inst)
void visitGetElementPtrInst(
llvm::GetElementPtrInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:334
Parameters
- llvm::GetElementPtrInst& Inst
¶void visitInsertElementInst(
llvm::InsertElementInst& Inst)
void visitInsertElementInst(
llvm::InsertElementInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:483
Parameters
- llvm::InsertElementInst& Inst
¶void visitInsertValueInst(
llvm::InsertValueInst& Inst)
void visitInsertValueInst(
llvm::InsertValueInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:498
Parameters
- llvm::InsertValueInst& Inst
¶void visitInstruction(llvm::Instruction&)
void visitInstruction(llvm::Instruction&)
Declared at: llvm/lib/Analysis/CFLGraph.h:259
Parameters
¶void visitIntToPtrInst(llvm::IntToPtrInst& Inst)
void visitIntToPtrInst(llvm::IntToPtrInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:277
Parameters
- llvm::IntToPtrInst& Inst
¶void visitLandingPadInst(
llvm::LandingPadInst& Inst)
void visitLandingPadInst(
llvm::LandingPadInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:490
Parameters
- llvm::LandingPadInst& Inst
¶void visitLoadInst(llvm::LoadInst& Inst)
void visitLoadInst(llvm::LoadInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:353
Parameters
- llvm::LoadInst& Inst
¶void visitPHINode(llvm::PHINode& Inst)
void visitPHINode(llvm::PHINode& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:318
Parameters
- llvm::PHINode& Inst
¶void visitPtrToIntInst(llvm::PtrToIntInst& Inst)
void visitPtrToIntInst(llvm::PtrToIntInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:272
Parameters
- llvm::PtrToIntInst& Inst
¶void visitReturnInst(llvm::ReturnInst& Inst)
void visitReturnInst(llvm::ReturnInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:263
Parameters
- llvm::ReturnInst& Inst
¶void visitSelectInst(llvm::SelectInst& Inst)
void visitSelectInst(llvm::SelectInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:339
Parameters
- llvm::SelectInst& Inst
¶void visitShuffleVectorInst(
llvm::ShuffleVectorInst& Inst)
void visitShuffleVectorInst(
llvm::ShuffleVectorInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:510
Parameters
- llvm::ShuffleVectorInst& Inst
¶void visitStoreInst(llvm::StoreInst& Inst)
void visitStoreInst(llvm::StoreInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:359
Parameters
- llvm::StoreInst& Inst
¶void visitUnaryOperator(llvm::UnaryOperator& Inst)
void visitUnaryOperator(llvm::UnaryOperator& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:301
Parameters
- llvm::UnaryOperator& Inst
¶void visitVAArgInst(llvm::VAArgInst& Inst)
void visitVAArgInst(llvm::VAArgInst& Inst)
Declared at: llvm/lib/Analysis/CFLGraph.h:365
Parameters
- llvm::VAArgInst& Inst