#include "llvm/Analysis/AliasSetTracker.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/GuardUtils.h"
#include "llvm/Analysis/MemoryLocation.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/IR/Value.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
usingnamespacellvm;
static cl::opt<unsigned> SaturationThreshold(
"alias-set-saturation-threshold", cl::Hidden, cl::init(250),
cl::desc("The maximum total number of memory locations alias "
"sets may contain before degradation"));
void AliasSet::mergeSetIn(AliasSet &AS, AliasSetTracker &AST,
BatchAAResults &BatchAA) { … }
void AliasSetTracker::removeAliasSet(AliasSet *AS) { … }
void AliasSet::removeFromTracker(AliasSetTracker &AST) { … }
void AliasSet::addMemoryLocation(AliasSetTracker &AST,
const MemoryLocation &MemLoc,
bool KnownMustAlias) { … }
void AliasSet::addUnknownInst(Instruction *I, BatchAAResults &AA) { … }
AliasResult AliasSet::aliasesMemoryLocation(const MemoryLocation &MemLoc,
BatchAAResults &AA) const { … }
ModRefInfo AliasSet::aliasesUnknownInst(const Instruction *Inst,
BatchAAResults &AA) const { … }
AliasSet::PointerVector AliasSet::getPointers() const { … }
void AliasSetTracker::clear() { … }
AliasSet *AliasSetTracker::mergeAliasSetsForMemoryLocation(
const MemoryLocation &MemLoc, AliasSet *PtrAS, bool &MustAliasAll) { … }
AliasSet *AliasSetTracker::findAliasSetForUnknownInst(Instruction *Inst) { … }
AliasSet &AliasSetTracker::getAliasSetFor(const MemoryLocation &MemLoc) { … }
void AliasSetTracker::add(const MemoryLocation &Loc) { … }
void AliasSetTracker::add(LoadInst *LI) { … }
void AliasSetTracker::add(StoreInst *SI) { … }
void AliasSetTracker::add(VAArgInst *VAAI) { … }
void AliasSetTracker::add(AnyMemSetInst *MSI) { … }
void AliasSetTracker::add(AnyMemTransferInst *MTI) { … }
void AliasSetTracker::addUnknown(Instruction *Inst) { … }
void AliasSetTracker::add(Instruction *I) { … }
void AliasSetTracker::add(BasicBlock &BB) { … }
void AliasSetTracker::add(const AliasSetTracker &AST) { … }
AliasSet &AliasSetTracker::mergeAllAliasSets() { … }
AliasSet &AliasSetTracker::addMemoryLocation(MemoryLocation Loc,
AliasSet::AccessLattice E) { … }
void AliasSet::print(raw_ostream &OS) const { … }
void AliasSetTracker::print(raw_ostream &OS) const { … }
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
LLVM_DUMP_METHOD void AliasSet::dump() const { print(dbgs()); }
LLVM_DUMP_METHOD void AliasSetTracker::dump() const { print(dbgs()); }
#endif
AliasSetsPrinterPass::AliasSetsPrinterPass(raw_ostream &OS) : … { … }
PreservedAnalyses AliasSetsPrinterPass::run(Function &F,
FunctionAnalysisManager &AM) { … }