class AAResultBase

Declaration

template <typename DerivedT>
class AAResultBase { /* full declaration omitted */ };

Description

A CRTP-driven "mixin" base class to help implement the function alias analysis results concept. Because of the nature of many alias analysis implementations, they often only implement a subset of the interface. This base class will attempt to implement the remaining portions of the interface in terms of simpler forms of the interface where possible, and otherwise provide conservatively correct fallback implementations. Implementors of an alias analysis should derive from this CRTP, and then override specific methods that they wish to customize. There is no need to use virtual anywhere, the CRTP base class does static dispatch to the derived type passed into it.

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

Templates

DerivedT

Method Overview

  • protected AAResultBase<T>()
  • protected AAResultBase<T>(const AAResultBase<T> & Arg)
  • protected AAResultBase<T>(AAResultBase<T> && Arg)
  • public llvm::AliasResult alias(const llvm::MemoryLocation & LocA, const llvm::MemoryLocation & LocB, llvm::AAQueryInfo & AAQI)
  • public llvm::ModRefInfo getArgModRefInfo(const llvm::CallBase * Call, unsigned int ArgIdx)
  • protected llvm::AAResultBase::AAResultsProxy getBestAAResults()
  • public llvm::FunctionModRefBehavior getModRefBehavior(const llvm::CallBase * Call)
  • public llvm::FunctionModRefBehavior getModRefBehavior(const llvm::Function * F)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CallBase * Call, const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI)
  • public llvm::ModRefInfo getModRefInfo(const llvm::CallBase * Call1, const llvm::CallBase * Call2, llvm::AAQueryInfo & AAQI)
  • public bool pointsToConstantMemory(const llvm::MemoryLocation & Loc, llvm::AAQueryInfo & AAQI, bool OrLocal)

Methods

AAResultBase<T>()

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

AAResultBase<T>(const AAResultBase<T>& Arg)

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

Parameters

const AAResultBase<T>& Arg

AAResultBase<T>(AAResultBase<T>&& Arg)

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

Parameters

AAResultBase<T>&& Arg

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

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

Parameters

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

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

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

Parameters

const llvm::CallBase* Call
unsigned int ArgIdx

llvm::AAResultBase::AAResultsProxy
getBestAAResults()

Description

Get a proxy for the best AA result set to query at this time. When this result is part of a larger aggregation, this will proxy to that aggregation. When this result is used in isolation, it will just delegate back to the derived class's implementation. Note that callers of this need to take considerable care to not cause performance problems when they use this routine, in the case of a large number of alias analyses being aggregated, it can be expensive to walk back across the chain.

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

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

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

Parameters

const llvm::CallBase* Call

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

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

Parameters

const llvm::Function* F

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

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

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

Parameters

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

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

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

Parameters

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