aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/BasicAliasAnalysis.cpp
diff options
context:
space:
mode:
authorDavid Goldblatt <davidgoldblatt@fb.com>2023-04-24 14:12:00 -0700
committerDavid Goldblatt <davidgoldblatt@meta.com>2023-07-28 12:13:35 -0700
commitd020fa2b29d84b877d1e43dbfb3418275857bf87 (patch)
tree81bd7032efe78f5a005f2c0abfdf1a9e914e201a /llvm/lib/Analysis/BasicAliasAnalysis.cpp
parentc75b331fc23192a8249dc5e95e053258f5fb5194 (diff)
downloadllvm-d020fa2b29d84b877d1e43dbfb3418275857bf87.zip
llvm-d020fa2b29d84b877d1e43dbfb3418275857bf87.tar.gz
llvm-d020fa2b29d84b877d1e43dbfb3418275857bf87.tar.bz2
[AA] Skip the layer of indirection in returning conservative results.
Historically, AA implementations chained to a following implementation to answer recursive queries. This is no longer the case, but the legacy lives on in a confusing phrasing of the return-a-conservative-value paths. Let's just return "don't know" directly, where appropriate; the current two-step way is confusing. Differential Revision: https://reviews.llvm.org/D149100
Diffstat (limited to 'llvm/lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/BasicAliasAnalysis.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index 16e0e1f..c162b8f 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -731,7 +731,7 @@ ModRefInfo BasicAAResult::getModRefInfoMask(const MemoryLocation &Loc,
// global to be marked constant in some modules and non-constant in
// others. GV may even be a declaration, not a definition.
if (!GV->isConstant())
- return AAResultBase::getModRefInfoMask(Loc, AAQI, IgnoreLocals);
+ return ModRefInfo::ModRef;
continue;
}
@@ -747,18 +747,18 @@ ModRefInfo BasicAAResult::getModRefInfoMask(const MemoryLocation &Loc,
if (const PHINode *PN = dyn_cast<PHINode>(V)) {
// Don't bother inspecting phi nodes with many operands.
if (PN->getNumIncomingValues() > MaxLookup)
- return AAResultBase::getModRefInfoMask(Loc, AAQI, IgnoreLocals);
+ return ModRefInfo::ModRef;
append_range(Worklist, PN->incoming_values());
continue;
}
// Otherwise be conservative.
- return AAResultBase::getModRefInfoMask(Loc, AAQI, IgnoreLocals);
+ return ModRefInfo::ModRef;
} while (!Worklist.empty() && --MaxLookup);
// If we hit the maximum number of instructions to examine, be conservative.
if (!Worklist.empty())
- return AAResultBase::getModRefInfoMask(Loc, AAQI, IgnoreLocals);
+ return ModRefInfo::ModRef;
return Result;
}
@@ -813,7 +813,7 @@ ModRefInfo BasicAAResult::getArgModRefInfo(const CallBase *Call,
if (Call->paramHasAttr(ArgIdx, Attribute::ReadNone))
return ModRefInfo::NoModRef;
- return AAResultBase::getArgModRefInfo(Call, ArgIdx);
+ return ModRefInfo::ModRef;
}
#ifndef NDEBUG
@@ -972,8 +972,8 @@ ModRefInfo BasicAAResult::getModRefInfo(const CallBase *Call,
if (isIntrinsicCall(Call, Intrinsic::invariant_start))
return ModRefInfo::Ref;
- // The AAResultBase base class has some smarts, lets use them.
- return AAResultBase::getModRefInfo(Call, Loc, AAQI);
+ // Be conservative.
+ return ModRefInfo::ModRef;
}
ModRefInfo BasicAAResult::getModRefInfo(const CallBase *Call1,
@@ -1000,8 +1000,8 @@ ModRefInfo BasicAAResult::getModRefInfo(const CallBase *Call1,
? ModRefInfo::Mod
: ModRefInfo::NoModRef;
- // The AAResultBase base class has some smarts, lets use them.
- return AAResultBase::getModRefInfo(Call1, Call2, AAQI);
+ // Be conservative.
+ return ModRefInfo::ModRef;
}
/// Return true if we know V to the base address of the corresponding memory