14#ifndef LLVM_ANALYSIS_SCOPEDNOALIASAA_H
15#define LLVM_ANALYSIS_SCOPEDNOALIASAA_H
25struct AnalysisOptions;
34 const AnalysisOptions &Opts;
43 FunctionAnalysisManager::Invalidator &) {
64 bool DisjointOnly =
false);
90 std::unique_ptr<ScopedNoAliasAAResult> Result;
100 bool doInitialization(
Module &M)
override;
101 bool doFinalization(
Module &M)
override;
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
This header defines various interfaces for pass management in LLVM.
This class stores info we want to provide to or retain within an alias query.
The possible results of an alias query.
Represent the analysis usage information of a pass.
Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...
An instruction for ordering other memory operations.
ImmutablePass class - This class is used to provide information that does not need to be run.
This is an important class for using LLVM in a threaded context.
Representation for a specific memory location.
A Module instance is used to store all the information related to an LLVM module.
A set of analyses that are preserved following a run of a transformation pass.
A simple AA result which uses scoped-noalias metadata to answer queries.
static LLVM_ABI bool mayAliasInScopes(const MDNode *Scopes, const MDNode *NoAlias)
LLVM_ABI AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB)
bool invalidate(Function &, const PreservedAnalyses &, FunctionAnalysisManager::Invalidator &)
Handle invalidation events from the new pass manager.
LLVM_ABI ModRefInfo getModRefInfo(const CallBase *Call, const MemoryLocation &Loc, AAQueryInfo &AAQI)
LLVM_ABI ScopedNoAliasAAResult(const LLVMContext &C)
static LLVM_ABI void collectScopedDomains(const MDNode *NoAlias, SmallPtrSetImpl< const MDNode * > &Domains, bool DisjointOnly=false)
Collect the set of scoped domains relevant to the noalias scopes.
static LLVM_ABI bool mayAliasInDisjointDomains(const MDNode *Scopes1, const MDNode *Scopes2)
Return false if two accesses with scope lists Scopes1 and Scopes2 are kept apart because they use dif...
ScopedNoAliasAAResult & getResult()
const ScopedNoAliasAAResult & getResult() const
ScopedNoAliasAAWrapperPass()
Analysis pass providing a never-invalidated alias analysis result.
LLVM_ABI ScopedNoAliasAAResult run(Function &F, FunctionAnalysisManager &AM)
ScopedNoAliasAAResult Result
A templated base class for SmallPtrSet which provides the typesafe interface that is common across al...
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI ImmutablePass * createScopedNoAliasAAWrapperPass()
ModRefInfo
Flags indicating whether a memory access modifies or references memory.
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...