aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/AliasAnalysis.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Analysis/AliasAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/AliasAnalysis.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp
index 2a2b49f..5f477ed 100644
--- a/llvm/lib/Analysis/AliasAnalysis.cpp
+++ b/llvm/lib/Analysis/AliasAnalysis.cpp
@@ -238,7 +238,7 @@ ModRefInfo AAResults::getModRefInfo(const CallBase *Call,
// We can completely ignore inaccessible memory here, because MemoryLocations
// can only reference accessible memory.
- auto MRB = getModRefBehavior(Call).getWithoutLoc(
+ auto MRB = getModRefBehavior(Call, AAQI).getWithoutLoc(
FunctionModRefBehavior::InaccessibleMem);
if (MRB.doesNotAccessMemory())
return ModRefInfo::NoModRef;
@@ -296,11 +296,11 @@ ModRefInfo AAResults::getModRefInfo(const CallBase *Call1,
// aggregate set of AA results.
// If Call1 or Call2 are readnone, they don't interact.
- auto Call1B = getModRefBehavior(Call1);
+ auto Call1B = getModRefBehavior(Call1, AAQI);
if (Call1B.doesNotAccessMemory())
return ModRefInfo::NoModRef;
- auto Call2B = getModRefBehavior(Call2);
+ auto Call2B = getModRefBehavior(Call2, AAQI);
if (Call2B.doesNotAccessMemory())
return ModRefInfo::NoModRef;
@@ -387,11 +387,12 @@ ModRefInfo AAResults::getModRefInfo(const CallBase *Call1,
return Result;
}
-FunctionModRefBehavior AAResults::getModRefBehavior(const CallBase *Call) {
+FunctionModRefBehavior AAResults::getModRefBehavior(const CallBase *Call,
+ AAQueryInfo &AAQI) {
FunctionModRefBehavior Result = FunctionModRefBehavior::unknown();
for (const auto &AA : AAs) {
- Result &= AA->getModRefBehavior(Call);
+ Result &= AA->getModRefBehavior(Call, AAQI);
// Early-exit the moment we reach the bottom of the lattice.
if (Result.doesNotAccessMemory())
@@ -401,6 +402,11 @@ FunctionModRefBehavior AAResults::getModRefBehavior(const CallBase *Call) {
return Result;
}
+FunctionModRefBehavior AAResults::getModRefBehavior(const CallBase *Call) {
+ SimpleAAQueryInfo AAQI;
+ return getModRefBehavior(Call, AAQI);
+}
+
FunctionModRefBehavior AAResults::getModRefBehavior(const Function *F) {
FunctionModRefBehavior Result = FunctionModRefBehavior::unknown();
@@ -662,7 +668,7 @@ ModRefInfo AAResults::getModRefInfo(const Instruction *I,
AAQueryInfo &AAQIP) {
if (OptLoc == None) {
if (const auto *Call = dyn_cast<CallBase>(I))
- return getModRefBehavior(Call).getModRef();
+ return getModRefBehavior(Call, AAQIP).getModRef();
}
const MemoryLocation &Loc = OptLoc.value_or(MemoryLocation());