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

Methods

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)

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)

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)

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>())

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)

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)

Declared at: llvm/lib/Analysis/CFLGraph.h:191

Parameters

llvm::CallBase& Call
SmallVectorImpl<llvm::Function*>& Output

static bool hasUsefulEdges(llvm::ConstantExpr* CE)

Declared at: llvm/lib/Analysis/CFLGraph.h:182

Parameters

llvm::ConstantExpr* CE

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)

Declared at: llvm/lib/Analysis/CFLGraph.h:382

Parameters

llvm::CallBase& Call
const SmallVectorImpl<llvm::Function*>& Fns

void visitAllocaInst(llvm::AllocaInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:351

Parameters

llvm::AllocaInst& Inst

void visitAtomicCmpXchgInst(
    llvm::AtomicCmpXchgInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:306

Parameters

llvm::AtomicCmpXchgInst& Inst

void visitAtomicRMWInst(llvm::AtomicRMWInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:312

Parameters

llvm::AtomicRMWInst& Inst

void visitBinaryOperator(
    llvm::BinaryOperator& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:294

Parameters

llvm::BinaryOperator& Inst

void visitCallBase(llvm::CallBase& Call)

Declared at: llvm/lib/Analysis/CFLGraph.h:424

Parameters

llvm::CallBase& Call

void visitCastInst(llvm::CastInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:282

Parameters

llvm::CastInst& Inst

void visitConstantExpr(llvm::ConstantExpr* CE)

Declared at: llvm/lib/Analysis/CFLGraph.h:517

Parameters

llvm::ConstantExpr* CE

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)

Declared at: llvm/lib/Analysis/CFLGraph.h:505

Parameters

llvm::ExtractValueInst& Inst

void visitFreezeInst(llvm::FreezeInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:287

Parameters

llvm::FreezeInst& Inst

void visitGEP(llvm::GEPOperator& GEPOp)

Declared at: llvm/lib/Analysis/CFLGraph.h:323

Parameters

llvm::GEPOperator& GEPOp

void visitGetElementPtrInst(
    llvm::GetElementPtrInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:334

Parameters

llvm::GetElementPtrInst& Inst

void visitInsertElementInst(
    llvm::InsertElementInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:483

Parameters

llvm::InsertElementInst& Inst

void visitInsertValueInst(
    llvm::InsertValueInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:498

Parameters

llvm::InsertValueInst& Inst

void visitInstruction(llvm::Instruction&)

Declared at: llvm/lib/Analysis/CFLGraph.h:259

Parameters

llvm::Instruction&

void visitIntToPtrInst(llvm::IntToPtrInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:277

Parameters

llvm::IntToPtrInst& Inst

void visitLandingPadInst(
    llvm::LandingPadInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:490

Parameters

llvm::LandingPadInst& Inst

void visitLoadInst(llvm::LoadInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:353

Parameters

llvm::LoadInst& Inst

void visitPHINode(llvm::PHINode& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:318

Parameters

llvm::PHINode& Inst

void visitPtrToIntInst(llvm::PtrToIntInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:272

Parameters

llvm::PtrToIntInst& Inst

void visitReturnInst(llvm::ReturnInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:263

Parameters

llvm::ReturnInst& Inst

void visitSelectInst(llvm::SelectInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:339

Parameters

llvm::SelectInst& Inst

void visitShuffleVectorInst(
    llvm::ShuffleVectorInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:510

Parameters

llvm::ShuffleVectorInst& Inst

void visitStoreInst(llvm::StoreInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:359

Parameters

llvm::StoreInst& Inst

void visitUnaryOperator(llvm::UnaryOperator& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:301

Parameters

llvm::UnaryOperator& Inst

void visitVAArgInst(llvm::VAArgInst& Inst)

Declared at: llvm/lib/Analysis/CFLGraph.h:365

Parameters

llvm::VAArgInst& Inst