class AAResults

Declaration

class AAResults { /* full declaration omitted */ };

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:511

Member Variables

private const llvm::TargetLibraryInfo& TLI
private std::vector<std::unique_ptr<Concept>> AAs
private std::vector<AnalysisKey*> AADeps

Method Overview

  • public AAResults(llvm::AAResults && Arg)
  • public AAResults(const llvm::TargetLibraryInfo & TLI)
  • public void addAADependencyID(llvm::AnalysisKey * ID)
  • public template <typename AAResultT>void addAAResult(AAResultT & AAResult)
  • public llvm::AliasResult alias(const llvm::MemoryLocation & LocA, const llvm::MemoryLocation & LocB)
  • public llvm::AliasResult alias(const llvm::Value * V1, llvm::LocationSize V1Size, const llvm::Value * V2, llvm::LocationSize V2Size)
  • public llvm::AliasResult alias(const llvm::Value * V1, const llvm::Value * V2)
  • private llvm::AliasResult alias(const llvm::MemoryLocation & LocA, const llvm::MemoryLocation & LocB, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo callCapturesBefore(const llvm::Instruction * I, const llvm::MemoryLocation & MemLoc, llvm::DominatorTree * DT, llvm::AAQueryInfo & AAQIP)
  • public llvm::ModRefInfo callCapturesBefore(const llvm::Instruction * I, const llvm::Value * P, llvm::LocationSize Size, llvm::DominatorTree * DT)
  • public llvm::ModRefInfo callCapturesBefore(const llvm::Instruction * I, const llvm::MemoryLocation & MemLoc, llvm::DominatorTree * DT)
  • public bool canBasicBlockModify(const llvm::BasicBlock & BB, const llvm::Value * P, llvm::LocationSize Size)
  • public bool canBasicBlockModify(const llvm::BasicBlock & BB, const llvm::MemoryLocation & Loc)
  • public bool canInstructionRangeModRef(const llvm::Instruction & I1, const llvm::Instruction & I2, const llvm::MemoryLocation & Loc, const llvm::ModRefInfo Mode)
  • public bool canInstructionRangeModRef(const llvm::Instruction & I1, const llvm::Instruction & I2, const llvm::Value * Ptr, llvm::LocationSize Size, const llvm::ModRefInfo Mode)
  • public static bool doesAccessArgPointees(llvm::FunctionModRefBehavior MRB)
  • public static bool doesAccessInaccessibleMem(llvm::FunctionModRefBehavior MRB)
  • public bool doesNotAccessMemory(const llvm::CallBase * Call)
  • public bool doesNotAccessMemory(const llvm::Function * F)
  • public llvm::ModRefInfo getArgModRefInfo(const llvm::CallBase * Call, unsigned int ArgIdx)
  • public llvm::FunctionModRefBehavior getModRefBehavior(const llvm::CallBase * Call)
  • public llvm::FunctionModRefBehavior getModRefBehavior(const llvm::Function * F)
  • public llvm::ModRefInfo getModRefInfo(llvm::Instruction * I, const llvm::CallBase * Call)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CallBase * Call1, const llvm::CallBase * Call2)
  • public llvm::ModRefInfo getModRefInfo(const llvm::Instruction * I, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::Instruction * I, const Optional<llvm::MemoryLocation> & OptLoc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CatchReturnInst * I, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CatchReturnInst * I, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CatchPadInst * I, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::AtomicCmpXchgInst * CX, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CatchPadInst * I, const llvm::MemoryLocation & Loc)
  • private llvm::ModRefInfo getModRefInfo(llvm::Instruction * I, const llvm::CallBase * Call2, llvm::AAQueryInfo & AAQIP)
  • private llvm::ModRefInfo getModRefInfo(const llvm::CallBase * Call, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::CallBase * Call1, const llvm::CallBase * Call2, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::VAArgInst * V, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::LoadInst * L, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::StoreInst * S, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::FenceInst * S, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::AtomicCmpXchgInst * CX, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::AtomicRMWInst * RMW, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::CatchPadInst * I, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::CatchReturnInst * I, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • private llvm::ModRefInfo getModRefInfo(const llvm::Instruction * I, const Optional<llvm::MemoryLocation> & OptLoc, llvm::AAQueryInfo & AAQIP)
  • public llvm::ModRefInfo getModRefInfo(const llvm::VAArgInst * I, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::VAArgInst * I, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CallBase * Call, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CallBase * Call, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::LoadInst * L, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::LoadInst * L, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::StoreInst * S, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::StoreInst * S, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::FenceInst * S, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::AtomicCmpXchgInst * CX, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::AtomicRMWInst * RMW, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::AtomicRMWInst * RMW, const llvm::Value * P, llvm::LocationSize Size)
  • public llvm::ModRefInfo getModRefInfo(const llvm::FenceInst * S, const llvm::MemoryLocation & Loc)
  • public bool invalidate(llvm::Function & F, const llvm::PreservedAnalyses & PA, FunctionAnalysisManager::Invalidator & Inv)
  • public bool isMustAlias(const llvm::MemoryLocation & LocA, const llvm::MemoryLocation & LocB)
  • public bool isMustAlias(const llvm::Value * V1, const llvm::Value * V2)
  • public bool isNoAlias(const llvm::Value * V1, const llvm::Value * V2)
  • public bool isNoAlias(const llvm::Value * V1, llvm::LocationSize V1Size, const llvm::Value * V2, llvm::LocationSize V2Size)
  • public bool isNoAlias(const llvm::MemoryLocation & LocA, const llvm::MemoryLocation & LocB)
  • public static bool onlyAccessesArgPointees(llvm::FunctionModRefBehavior MRB)
  • public static bool onlyAccessesInaccessibleMem(llvm::FunctionModRefBehavior MRB)
  • public static bool onlyAccessesInaccessibleOrArgMem(llvm::FunctionModRefBehavior MRB)
  • public static bool onlyReadsMemory(llvm::FunctionModRefBehavior MRB)
  • public bool onlyReadsMemory(const llvm::Function * F)
  • public bool onlyReadsMemory(const llvm::CallBase * Call)
  • public static bool onlyWritesMemory(llvm::FunctionModRefBehavior MRB)
  • private bool pointsToConstantMemory(const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI, bool OrLocal = false)
  • public bool pointsToConstantMemory(const llvm::MemoryLocation & Loc, bool OrLocal = false)
  • public bool pointsToConstantMemory(const llvm::Value * P, bool OrLocal = false)
  • public ~AAResults()

Methods

AAResults(llvm::AAResults&& Arg)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:516

Parameters

llvm::AAResults&& Arg

AAResults(const llvm::TargetLibraryInfo& TLI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:515

Parameters

const llvm::TargetLibraryInfo& TLI

void addAADependencyID(llvm::AnalysisKey* ID)

Description

Register a function analysis ID that the results aggregation depends on. This is used in the new pass manager to implement the invalidation logic where we must invalidate the results aggregation if any of our component analyses become invalid.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:532

Parameters

llvm::AnalysisKey* ID

template <typename AAResultT>
void addAAResult(AAResultT& AAResult)

Description

Register a specific AA result.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:520

Templates

AAResultT

Parameters

AAResultT& AAResult

llvm::AliasResult alias(
    const llvm::MemoryLocation& LocA,
    const llvm::MemoryLocation& LocB)

Description

The main low level interface to the alias analysis implementation. Returns an AliasResult indicating whether the two pointers are aliased to each other. This is the interface that must be implemented by specific alias analysis implementations.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:549

Parameters

const llvm::MemoryLocation& LocA
const llvm::MemoryLocation& LocB

llvm::AliasResult alias(const llvm::Value* V1,
                        llvm::LocationSize V1Size,
                        const llvm::Value* V2,
                        llvm::LocationSize V2Size)

Description

A convenience wrapper around the primary \c alias interface.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:552

Parameters

const llvm::Value* V1
llvm::LocationSize V1Size
const llvm::Value* V2
llvm::LocationSize V2Size

llvm::AliasResult alias(const llvm::Value* V1,
                        const llvm::Value* V2)

Description

A convenience wrapper around the primary \c alias interface.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:558

Parameters

const llvm::Value* V1
const llvm::Value* V2

llvm::AliasResult alias(
    const llvm::MemoryLocation& LocA,
    const llvm::MemoryLocation& LocB,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:897

Parameters

const llvm::MemoryLocation& LocA
const llvm::MemoryLocation& LocB
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo callCapturesBefore(
    const llvm::Instruction* I,
    const llvm::MemoryLocation& MemLoc,
    llvm::DominatorTree* DT,
    llvm::AAQueryInfo& AAQIP)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:926

Parameters

const llvm::Instruction* I
const llvm::MemoryLocation& MemLoc
llvm::DominatorTree* DT
llvm::AAQueryInfo& AAQIP

llvm::ModRefInfo callCapturesBefore(
    const llvm::Instruction* I,
    const llvm::Value* P,
    llvm::LocationSize Size,
    llvm::DominatorTree* DT)

Description

A convenience wrapper to synthesize a memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:860

Parameters

const llvm::Instruction* I
const llvm::Value* P
llvm::LocationSize Size
llvm::DominatorTree* DT

llvm::ModRefInfo callCapturesBefore(
    const llvm::Instruction* I,
    const llvm::MemoryLocation& MemLoc,
    llvm::DominatorTree* DT)

Description

Return information about whether a particular call site modifies or reads the specified memory location \p MemLoc before instruction \p I in a BasicBlock. Early exits in callCapturesBefore may lead to ModRefInfo::Must not being set.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:852

Parameters

const llvm::Instruction* I
const llvm::MemoryLocation& MemLoc
llvm::DominatorTree* DT

bool canBasicBlockModify(
    const llvm::BasicBlock& BB,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

A convenience wrapper synthesizing a memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:875

Parameters

const llvm::BasicBlock& BB
const llvm::Value* P
llvm::LocationSize Size

bool canBasicBlockModify(
    const llvm::BasicBlock& BB,
    const llvm::MemoryLocation& Loc)

Description

Check if it is possible for execution of the specified basic block to modify the location Loc.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:872

Parameters

const llvm::BasicBlock& BB
const llvm::MemoryLocation& Loc

bool canInstructionRangeModRef(
    const llvm::Instruction& I1,
    const llvm::Instruction& I2,
    const llvm::MemoryLocation& Loc,
    const llvm::ModRefInfo Mode)

Description

Check if it is possible for the execution of the specified instructions to mod\ref (according to the mode) the location Loc. The instructions to consider are all of the instructions in the range of [I1,I2] INCLUSIVE. I1 and I2 must be in the same basic block.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:885

Parameters

const llvm::Instruction& I1
const llvm::Instruction& I2
const llvm::MemoryLocation& Loc
const llvm::ModRefInfo Mode

bool canInstructionRangeModRef(
    const llvm::Instruction& I1,
    const llvm::Instruction& I2,
    const llvm::Value* Ptr,
    llvm::LocationSize Size,
    const llvm::ModRefInfo Mode)

Description

A convenience wrapper synthesizing a memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:890

Parameters

const llvm::Instruction& I1
const llvm::Instruction& I2
const llvm::Value* Ptr
llvm::LocationSize Size
const llvm::ModRefInfo Mode

static bool doesAccessArgPointees(
    llvm::FunctionModRefBehavior MRB)

Description

Checks if functions with the specified behavior are known to potentially read or write from objects pointed to be their pointer-typed arguments (with arbitrary offsets).

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:699

Parameters

llvm::FunctionModRefBehavior MRB

static bool doesAccessInaccessibleMem(
    llvm::FunctionModRefBehavior MRB)

Description

Checks if functions with the specified behavior are known to potentially read or write from memory that is inaccessible from LLVM IR.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:712

Parameters

llvm::FunctionModRefBehavior MRB

bool doesNotAccessMemory(
    const llvm::CallBase* Call)

Description

Checks if the specified call is known to never read or write memory. Note that if the call only reads from known-constant memory, it is also legal to return true. Also, calls that unwind the stack are legal for this predicate. Many optimizations (such as CSE and LICM) can be performed on such calls without worrying about aliasing properties, and many calls have this property (e.g. calls to 'sin' and 'cos'). This property corresponds to the GCC 'const' attribute.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:632

Parameters

const llvm::CallBase* Call

bool doesNotAccessMemory(const llvm::Function* F)

Description

Checks if the specified function is known to never read or write memory. Note that if the function only reads from known-constant memory, it is also legal to return true. Also, function that unwind the stack are legal for this predicate. Many optimizations (such as CSE and LICM) can be performed on such calls to such functions without worrying about aliasing properties, and many functions have this property (e.g. 'sin' and 'cos'). This property corresponds to the GCC 'const' attribute.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:647

Parameters

const llvm::Function* F

llvm::ModRefInfo getArgModRefInfo(
    const llvm::CallBase* Call,
    unsigned int ArgIdx)

Description

Get the ModRef info associated with a pointer argument of a call. The result's bits are set to indicate the allowed aliasing ModRef kinds. Note that these bits do not necessarily account for the overall behavior of the function, but rather only provide additional per-argument information. This never sets ModRefInfo::Must.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:613

Parameters

const llvm::CallBase* Call
unsigned int ArgIdx

llvm::FunctionModRefBehavior getModRefBehavior(
    const llvm::CallBase* Call)

Description

Return the behavior of the given call site.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:616

Parameters

const llvm::CallBase* Call

llvm::FunctionModRefBehavior getModRefBehavior(
    const llvm::Function* F)

Description

Return the behavior when calling the given function.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:619

Parameters

const llvm::Function* F

llvm::ModRefInfo getModRefInfo(
    llvm::Instruction* I,
    const llvm::CallBase* Call)

Description

Return information about whether a call and an instruction may refer to the same memory locations.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:840

Parameters

llvm::Instruction* I
const llvm::CallBase* Call

llvm::ModRefInfo getModRefInfo(
    const llvm::CallBase* Call1,
    const llvm::CallBase* Call2)

Description

Return information about whether two call sites may refer to the same set of memory locations. See the AA documentation for details: http://llvm.org/docs/AliasAnalysis.html#ModRefInfo

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:845

Parameters

const llvm::CallBase* Call1
const llvm::CallBase* Call2

llvm::ModRefInfo getModRefInfo(
    const llvm::Instruction* I,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

A convenience wrapper for constructing the memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:833

Parameters

const llvm::Instruction* I
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::Instruction* I,
    const Optional<llvm::MemoryLocation>& OptLoc)

Description

Check whether or not an instruction may read or write the optionally specified memory location. An instruction that doesn't read or write memory may be trivially LICM'd for example. For function calls, this delegates to the alias-analysis specific call-site mod-ref behavior queries. Otherwise it delegates to the specific helpers above.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:826

Parameters

const llvm::Instruction* I
const Optional<llvm::MemoryLocation>& OptLoc

llvm::ModRefInfo getModRefInfo(
    const llvm::CatchReturnInst* I,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

getModRefInfo (for catchrets) - A convenience wrapper.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:811

Parameters

const llvm::CatchReturnInst* I
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::CatchReturnInst* I,
    const llvm::MemoryLocation& Loc)

Description

getModRefInfo (for catchrets) - Return information about whether a particular catchret modifies or reads the specified memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:808

Parameters

const llvm::CatchReturnInst* I
const llvm::MemoryLocation& Loc

llvm::ModRefInfo getModRefInfo(
    const llvm::CatchPadInst* I,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

getModRefInfo (for catchpads) - A convenience wrapper.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:801

Parameters

const llvm::CatchPadInst* I
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::AtomicCmpXchgInst* CX,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

getModRefInfo (for cmpxchges) - A convenience wrapper.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:771

Parameters

const llvm::AtomicCmpXchgInst* CX
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::CatchPadInst* I,
    const llvm::MemoryLocation& Loc)

Description

getModRefInfo (for catchpads) - Return information about whether a particular catchpad modifies or reads the specified memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:798

Parameters

const llvm::CatchPadInst* I
const llvm::MemoryLocation& Loc

llvm::ModRefInfo getModRefInfo(
    llvm::Instruction* I,
    const llvm::CallBase* Call2,
    llvm::AAQueryInfo& AAQIP)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:901

Parameters

llvm::Instruction* I
const llvm::CallBase* Call2
llvm::AAQueryInfo& AAQIP

llvm::ModRefInfo getModRefInfo(
    const llvm::CallBase* Call,
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:903

Parameters

const llvm::CallBase* Call
const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::CallBase* Call1,
    const llvm::CallBase* Call2,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:905

Parameters

const llvm::CallBase* Call1
const llvm::CallBase* Call2
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::VAArgInst* V,
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:907

Parameters

const llvm::VAArgInst* V
const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::LoadInst* L,
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:909

Parameters

const llvm::LoadInst* L
const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::StoreInst* S,
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:911

Parameters

const llvm::StoreInst* S
const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::FenceInst* S,
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:913

Parameters

const llvm::FenceInst* S
const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::AtomicCmpXchgInst* CX,
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:915

Parameters

const llvm::AtomicCmpXchgInst* CX
const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::AtomicRMWInst* RMW,
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:917

Parameters

const llvm::AtomicRMWInst* RMW
const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::CatchPadInst* I,
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:919

Parameters

const llvm::CatchPadInst* I
const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::CatchReturnInst* I,
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:921

Parameters

const llvm::CatchReturnInst* I
const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI

llvm::ModRefInfo getModRefInfo(
    const llvm::Instruction* I,
    const Optional<llvm::MemoryLocation>& OptLoc,
    llvm::AAQueryInfo& AAQIP)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:923

Parameters

const llvm::Instruction* I
const Optional<llvm::MemoryLocation>& OptLoc
llvm::AAQueryInfo& AAQIP

llvm::ModRefInfo getModRefInfo(
    const llvm::VAArgInst* I,
    const llvm::MemoryLocation& Loc)

Description

getModRefInfo (for va_args) - Return information about whether a particular va_arg modifies or reads the specified memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:788

Parameters

const llvm::VAArgInst* I
const llvm::MemoryLocation& Loc

llvm::ModRefInfo getModRefInfo(
    const llvm::VAArgInst* I,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

getModRefInfo (for va_args) - A convenience wrapper.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:791

Parameters

const llvm::VAArgInst* I
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::CallBase* Call,
    const llvm::MemoryLocation& Loc)

Description

getModRefInfo (for call sites) - Return information about whether a particular call site modifies or reads the specified memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:727

Parameters

const llvm::CallBase* Call
const llvm::MemoryLocation& Loc

llvm::ModRefInfo getModRefInfo(
    const llvm::CallBase* Call,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

getModRefInfo (for call sites) - A convenience wrapper.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:730

Parameters

const llvm::CallBase* Call
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::LoadInst* L,
    const llvm::MemoryLocation& Loc)

Description

getModRefInfo (for loads) - Return information about whether a particular load modifies or reads the specified memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:737

Parameters

const llvm::LoadInst* L
const llvm::MemoryLocation& Loc

llvm::ModRefInfo getModRefInfo(
    const llvm::LoadInst* L,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

getModRefInfo (for loads) - A convenience wrapper.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:740

Parameters

const llvm::LoadInst* L
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::StoreInst* S,
    const llvm::MemoryLocation& Loc)

Description

getModRefInfo (for stores) - Return information about whether a particular store modifies or reads the specified memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:747

Parameters

const llvm::StoreInst* S
const llvm::MemoryLocation& Loc

llvm::ModRefInfo getModRefInfo(
    const llvm::StoreInst* S,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

getModRefInfo (for stores) - A convenience wrapper.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:750

Parameters

const llvm::StoreInst* S
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::FenceInst* S,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

getModRefInfo (for fences) - A convenience wrapper.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:760

Parameters

const llvm::FenceInst* S
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::AtomicCmpXchgInst* CX,
    const llvm::MemoryLocation& Loc)

Description

getModRefInfo (for cmpxchges) - Return information about whether a particular cmpxchg modifies or reads the specified memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:767

Parameters

const llvm::AtomicCmpXchgInst* CX
const llvm::MemoryLocation& Loc

llvm::ModRefInfo getModRefInfo(
    const llvm::AtomicRMWInst* RMW,
    const llvm::MemoryLocation& Loc)

Description

getModRefInfo (for atomicrmws) - Return information about whether a particular atomicrmw modifies or reads the specified memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:778

Parameters

const llvm::AtomicRMWInst* RMW
const llvm::MemoryLocation& Loc

llvm::ModRefInfo getModRefInfo(
    const llvm::AtomicRMWInst* RMW,
    const llvm::Value* P,
    llvm::LocationSize Size)

Description

getModRefInfo (for atomicrmws) - A convenience wrapper.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:781

Parameters

const llvm::AtomicRMWInst* RMW
const llvm::Value* P
llvm::LocationSize Size

llvm::ModRefInfo getModRefInfo(
    const llvm::FenceInst* S,
    const llvm::MemoryLocation& Loc)

Description

getModRefInfo (for fences) - Return information about whether a particular store modifies or reads the specified memory location.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:757

Parameters

const llvm::FenceInst* S
const llvm::MemoryLocation& Loc

bool invalidate(
    llvm::Function& F,
    const llvm::PreservedAnalyses& PA,
    FunctionAnalysisManager::Invalidator& Inv)

Description

Handle invalidation events in the new pass manager. The aggregation is invalidated if any of the underlying analyses is invalidated.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:538

Parameters

llvm::Function& F
const llvm::PreservedAnalyses& PA
FunctionAnalysisManager::Invalidator& Inv

bool isMustAlias(const llvm::MemoryLocation& LocA,
                 const llvm::MemoryLocation& LocB)

Description

A trivial helper function to check to see if the specified pointers are must-alias.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:583

Parameters

const llvm::MemoryLocation& LocA
const llvm::MemoryLocation& LocB

bool isMustAlias(const llvm::Value* V1,
                 const llvm::Value* V2)

Description

A convenience wrapper around the \c isMustAlias helper interface.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:588

Parameters

const llvm::Value* V1
const llvm::Value* V2

bool isNoAlias(const llvm::Value* V1,
               const llvm::Value* V2)

Description

A convenience wrapper around the \c isNoAlias helper interface.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:576

Parameters

const llvm::Value* V1
const llvm::Value* V2

bool isNoAlias(const llvm::Value* V1,
               llvm::LocationSize V1Size,
               const llvm::Value* V2,
               llvm::LocationSize V2Size)

Description

A convenience wrapper around the \c isNoAlias helper interface.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:570

Parameters

const llvm::Value* V1
llvm::LocationSize V1Size
const llvm::Value* V2
llvm::LocationSize V2Size

bool isNoAlias(const llvm::MemoryLocation& LocA,
               const llvm::MemoryLocation& LocB)

Description

A trivial helper function to check to see if the specified pointers are no-alias.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:565

Parameters

const llvm::MemoryLocation& LocA
const llvm::MemoryLocation& LocB

static bool onlyAccessesArgPointees(
    llvm::FunctionModRefBehavior MRB)

Description

Checks if functions with the specified behavior are known to read and write at most from objects pointed to by their pointer-typed arguments (with arbitrary offsets).

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:692

Parameters

llvm::FunctionModRefBehavior MRB

static bool onlyAccessesInaccessibleMem(
    llvm::FunctionModRefBehavior MRB)

Description

Checks if functions with the specified behavior are known to read and write at most from memory that is inaccessible from LLVM IR.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:706

Parameters

llvm::FunctionModRefBehavior MRB

static bool onlyAccessesInaccessibleOrArgMem(
    llvm::FunctionModRefBehavior MRB)

Description

Checks if functions with the specified behavior are known to read and write at most from memory that is inaccessible from LLVM IR or objects pointed to by their pointer-typed arguments (with arbitrary offsets).

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:720

Parameters

llvm::FunctionModRefBehavior MRB

static bool onlyReadsMemory(
    llvm::FunctionModRefBehavior MRB)

Description

Checks if functions with the specified behavior are known to only read from non-volatile memory (or not access memory at all).

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:679

Parameters

llvm::FunctionModRefBehavior MRB

bool onlyReadsMemory(const llvm::Function* F)

Description

Checks if the specified function is known to only read from non-volatile memory (or not access memory at all). Functions that unwind the stack are legal for this predicate. This property allows many common optimizations to be performed in the absence of interfering store instructions, such as CSE of strlen calls. This property corresponds to the GCC 'pure' attribute.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:673

Parameters

const llvm::Function* F

bool onlyReadsMemory(const llvm::CallBase* Call)

Description

Checks if the specified call is known to only read from non-volatile memory (or not access memory at all). Calls that unwind the stack are legal for this predicate. This property allows many common optimizations to be performed in the absence of interfering store instructions, such as CSE of strlen calls. This property corresponds to the GCC 'pure' attribute.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:660

Parameters

const llvm::CallBase* Call

static bool onlyWritesMemory(
    llvm::FunctionModRefBehavior MRB)

Description

Checks if functions with the specified behavior are known to only write memory (or not access memory at all).

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:685

Parameters

llvm::FunctionModRefBehavior MRB

bool pointsToConstantMemory(
    const llvm::MemoryLocation& Loc,
    llvm::AAQueryInfo& AAQI,
    bool OrLocal = false)

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:899

Parameters

const llvm::MemoryLocation& Loc
llvm::AAQueryInfo& AAQI
bool OrLocal = false

bool pointsToConstantMemory(
    const llvm::MemoryLocation& Loc,
    bool OrLocal = false)

Description

Checks whether the given location points to constant memory, or if\p OrLocal is true whether it points to a local alloca.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:595

Parameters

const llvm::MemoryLocation& Loc
bool OrLocal = false

bool pointsToConstantMemory(const llvm::Value* P,
                            bool OrLocal = false)

Description

A convenience wrapper around the primary \c pointsToConstantMemory interface.

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:599

Parameters

const llvm::Value* P
bool OrLocal = false

~AAResults()

Declared at: llvm/include/llvm/Analysis/AliasAnalysis.h:517