LLVM  8.0.1
Classes | Namespaces | Typedefs | Enumerations | Functions
AliasAnalysis.h File Reference
#include "llvm/ADT/None.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/MemoryLocation.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Pass.h"
#include <cstdint>
#include <functional>
#include <memory>
#include <vector>
Include dependency graph for AliasAnalysis.h:

Go to the source code of this file.

Classes

class  llvm::AAResults
 
class  llvm::AAResults::Concept
 A private abstract base class describing the concept of an individual alias analysis implementation. More...
 
class  llvm::AAResultBase< DerivedT >
 A CRTP-driven "mixin" base class to help implement the function alias analysis results concept. More...
 
class  llvm::AAResultBase< DerivedT >::AAResultsProxy
 This proxy class models a common pattern where we delegate to either the top-level AAResults aggregation if one is registered, or to the current result if none are registered. More...
 
class  llvm::AAManager
 A manager for alias analyses. More...
 
class  llvm::AAResultsWrapperPass
 A wrapper pass to provide the legacy pass manager access to a suitably prepared AAResults object. More...
 
struct  llvm::ExternalAAWrapperPass
 A wrapper pass for external alias analyses. More...
 

Namespaces

 llvm
 This class represents lattice values for constants.
 

Typedefs

using llvm::AliasAnalysis = AAResults
 Temporary typedef for legacy code that uses a generic AliasAnalysis pointer or reference. More...
 

Enumerations

enum  llvm::AliasResult : uint8_t { llvm::NoAlias = 0, llvm::MayAlias, llvm::PartialAlias, llvm::MustAlias }
 The possible results of an alias query. More...
 
enum  llvm::ModRefInfo : uint8_t {
  llvm::ModRefInfo::Must = 0, llvm::ModRefInfo::MustRef = 1, llvm::ModRefInfo::MustMod = 2, llvm::ModRefInfo::MustModRef = MustRef | MustMod,
  llvm::ModRefInfo::NoModRef = 4, llvm::ModRefInfo::Ref = NoModRef | MustRef, llvm::ModRefInfo::Mod = NoModRef | MustMod, llvm::ModRefInfo::ModRef = Ref | Mod
}
 Flags indicating whether a memory access modifies or references memory. More...
 
enum  llvm::FunctionModRefLocation { llvm::FMRL_Nowhere = 0, llvm::FMRL_ArgumentPointees = 8, llvm::FMRL_InaccessibleMem = 16, llvm::FMRL_Anywhere = 32 | FMRL_InaccessibleMem | FMRL_ArgumentPointees }
 The locations at which a function might access memory. More...
 
enum  llvm::FunctionModRefBehavior {
  llvm::FMRB_DoesNotAccessMemory, llvm::FMRB_OnlyReadsArgumentPointees, llvm::FMRB_OnlyAccessesArgumentPointees, llvm::FMRB_OnlyAccessesInaccessibleMem,
  llvm::FMRB_OnlyAccessesInaccessibleOrArgMem, llvm::FMRB_OnlyReadsMemory = FMRL_Anywhere | static_cast<int>(ModRefInfo::Ref), llvm::FMRB_DoesNotReadMemory = FMRL_Anywhere | static_cast<int>(ModRefInfo::Mod), llvm::FMRB_UnknownModRefBehavior
}
 Summary of how a function affects memory in the program. More...
 

Functions

raw_ostreamllvm::operator<< (raw_ostream &OS, AliasResult AR)
 << operator for AliasResult. More...
 
LLVM_NODISCARD bool llvm::isNoModRef (const ModRefInfo MRI)
 
LLVM_NODISCARD bool llvm::isModOrRefSet (const ModRefInfo MRI)
 
LLVM_NODISCARD bool llvm::isModAndRefSet (const ModRefInfo MRI)
 
LLVM_NODISCARD bool llvm::isModSet (const ModRefInfo MRI)
 
LLVM_NODISCARD bool llvm::isRefSet (const ModRefInfo MRI)
 
LLVM_NODISCARD bool llvm::isMustSet (const ModRefInfo MRI)
 
LLVM_NODISCARD ModRefInfo llvm::setMod (const ModRefInfo MRI)
 
LLVM_NODISCARD ModRefInfo llvm::setRef (const ModRefInfo MRI)
 
LLVM_NODISCARD ModRefInfo llvm::setMust (const ModRefInfo MRI)
 
LLVM_NODISCARD ModRefInfo llvm::setModAndRef (const ModRefInfo MRI)
 
LLVM_NODISCARD ModRefInfo llvm::clearMod (const ModRefInfo MRI)
 
LLVM_NODISCARD ModRefInfo llvm::clearRef (const ModRefInfo MRI)
 
LLVM_NODISCARD ModRefInfo llvm::clearMust (const ModRefInfo MRI)
 
LLVM_NODISCARD ModRefInfo llvm::unionModRef (const ModRefInfo MRI1, const ModRefInfo MRI2)
 
LLVM_NODISCARD ModRefInfo llvm::intersectModRef (const ModRefInfo MRI1, const ModRefInfo MRI2)
 
LLVM_NODISCARD ModRefInfo llvm::createModRefInfo (const FunctionModRefBehavior FMRB)
 
bool llvm::isNoAliasCall (const Value *V)
 Return true if this pointer is returned by a noalias function. More...
 
bool llvm::isNoAliasArgument (const Value *V)
 Return true if this is an argument with the noalias attribute. More...
 
bool llvm::isIdentifiedObject (const Value *V)
 Return true if this pointer refers to a distinct and identifiable object. More...
 
bool llvm::isIdentifiedFunctionLocal (const Value *V)
 Return true if V is umabigously identified at the function-level. More...
 
FunctionPassllvm::createAAResultsWrapperPass ()
 
ImmutablePass * llvm::createExternalAAWrapperPass (std::function< void(Pass &, Function &, AAResults &)> Callback)
 A wrapper pass around a callback which can be used to populate the AAResults in the AAResultsWrapperPass from an external AA. More...
 
AAResults llvm::createLegacyPMAAResults (Pass &P, Function &F, BasicAAResult &BAR)
 A helper for the legacy pass manager to create a AAResults object populated to the best of our ability for a particular function when inside of a ModulePass or a CallGraphSCCPass. More...
 
void llvm::getAAResultsAnalysisUsage (AnalysisUsage &AU)
 A helper for the legacy pass manager to populate AU to add uses to make sure the analyses required by createLegacyPMAAResults are available. More...