#include "NVPTXAliasAnalysis.h"
#include "MCTargetDesc/NVPTXBaseInfo.h"
#include "NVPTX.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Instructions.h"
#include "llvm/Support/CommandLine.h"
usingnamespacellvm;
#define DEBUG_TYPE …
static cl::opt<unsigned> TraverseAddressSpacesLimit(
"nvptx-traverse-address-aliasing-limit", cl::Hidden,
cl::desc("Depth limit for finding address space through traversal"),
cl::init(6));
AnalysisKey NVPTXAA::Key;
char NVPTXAAWrapperPass::ID = …;
char NVPTXExternalAAWrapper::ID = …;
INITIALIZE_PASS(…)
INITIALIZE_PASS(…)
ImmutablePass *llvm::createNVPTXAAWrapperPass() { … }
ImmutablePass *llvm::createNVPTXExternalAAWrapperPass() { … }
NVPTXAAWrapperPass::NVPTXAAWrapperPass() : … { … }
void NVPTXAAWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const { … }
static unsigned getAddressSpace(const Value *V, unsigned MaxLookup) { … }
static AliasResult::Kind getAliasResult(unsigned AS1, unsigned AS2) { … }
AliasResult NVPTXAAResult::alias(const MemoryLocation &Loc1,
const MemoryLocation &Loc2, AAQueryInfo &AAQI,
const Instruction *) { … }
static bool isConstOrParam(unsigned AS) { … }
ModRefInfo NVPTXAAResult::getModRefInfoMask(const MemoryLocation &Loc,
AAQueryInfo &AAQI,
bool IgnoreLocals) { … }