class AAResults

Declaration

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

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

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)
  • public llvm::ModRefInfo callCapturesBefore(const llvm::Instruction * I, const llvm::Value * P, llvm::LocationSize Size, llvm::DominatorTree * DT, llvm::OrderedBasicBlock * OBB = nullptr)
  • public llvm::ModRefInfo callCapturesBefore(const llvm::Instruction * I, const llvm::MemoryLocation & MemLoc, llvm::DominatorTree * DT, llvm::OrderedBasicBlock * OBB = nullptr)
  • 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::Value * Ptr, llvm::LocationSize Size, const llvm::ModRefInfo Mode)
  • public bool canInstructionRangeModRef(const llvm::Instruction & I1, const llvm::Instruction & I2, const llvm::MemoryLocation & Loc, 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 static bool doesNotReadMemory(llvm::FunctionModRefBehavior MRB)
  • 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(const llvm::AtomicCmpXchgInst * CX, const llvm::Value * P, llvm::LocationSize Size)
  • 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::VAArgInst * I, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::AtomicCmpXchgInst * CX, 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::LoadInst * L, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CatchPadInst * 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::CatchReturnInst * I, const llvm::MemoryLocation & Loc)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CatchReturnInst * 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::Instruction * I, const llvm::Value * P, llvm::LocationSize Size)
  • 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::FenceInst * 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::StoreInst * S, 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::CallBase * Call, 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::FenceInst * S, const llvm::Value * P, llvm::LocationSize Size)
  • public bool invalidate(llvm::Function & F, const llvm::PreservedAnalyses & PA, FunctionAnalysisManager::Invalidator & Inv)
  • public bool isMustAlias(const llvm::Value * V1, const llvm::Value * V2)
  • public bool isMustAlias(const llvm::MemoryLocation & LocA, const llvm::MemoryLocation & LocB)
  • public bool isNoAlias(const llvm::MemoryLocation & LocA, const llvm::MemoryLocation & LocB)
  • public bool isNoAlias(const llvm::Value * V1, llvm::LocationSize V1Size, const llvm::Value * V2, llvm::LocationSize V2Size)
  • public bool isNoAlias(const llvm::Value * V1, const llvm::Value * V2)
  • 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::CallBase * Call)
  • public bool onlyReadsMemory(const llvm::Function * F)
  • 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:316

Parameters

llvm::AAResults&& Arg

AAResults(const llvm::TargetLibraryInfo& TLI)

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

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:332

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:320

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:349

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:352

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:358

Parameters

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

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

Description

A convenience wrapper to synthesize a memory location.

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

Parameters

const llvm::Instruction* I
const llvm::Value* P
llvm::LocationSize Size
llvm::DominatorTree* DT
llvm::OrderedBasicBlock* OBB = nullptr

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

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. An ordered basic block \p OBB can be used to speed up instruction ordering queries inside the BasicBlock containing \p I. Early exits in callCapturesBefore may lead to ModRefInfo::Must not being set.

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

Parameters

const llvm::Instruction* I
const llvm::MemoryLocation& MemLoc
llvm::DominatorTree* DT
llvm::OrderedBasicBlock* OBB = nullptr

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:671

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:668

Parameters

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

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:686

Parameters

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

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:681

Parameters

const llvm::Instruction& I1
const llvm::Instruction& I2
const llvm::MemoryLocation& Loc
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:497

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:510

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:430

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:445

Parameters

const llvm::Function* F

static bool doesNotReadMemory(
    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:483

Parameters

llvm::FunctionModRefBehavior MRB

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:411

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:414

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:417

Parameters

const llvm::Function* F

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:568

Parameters

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

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:575

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:578

Parameters

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

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:585

Parameters

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

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:564

Parameters

const llvm::AtomicCmpXchgInst* CX
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:588

Parameters

const llvm::VAArgInst* I
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:534

Parameters

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

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:595

Parameters

const llvm::CatchPadInst* 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:598

Parameters

const llvm::CatchPadInst* 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:605

Parameters

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

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:608

Parameters

const llvm::CatchReturnInst* 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:623

Parameters

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

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:630

Parameters

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

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:637

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:642

Parameters

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

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:554

Parameters

const llvm::FenceInst* 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:547

Parameters

const llvm::StoreInst* S
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:544

Parameters

const llvm::StoreInst* S
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:537

Parameters

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

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:527

Parameters

const llvm::CallBase* Call
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:524

Parameters

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

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:557

Parameters

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

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:338

Parameters

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

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:386

Parameters

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

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:381

Parameters

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

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:364

Parameters

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

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:369

Parameters

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

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:375

Parameters

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

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:490

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:504

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:517

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:477

Parameters

llvm::FunctionModRefBehavior MRB

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:458

Parameters

const llvm::CallBase* Call

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:471

Parameters

const llvm::Function* F

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:393

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:397

Parameters

const llvm::Value* P
bool OrLocal = false

~AAResults()

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