diff options
author | David Goldblatt <davidgoldblatt@fb.com> | 2023-04-24 14:12:00 -0700 |
---|---|---|
committer | David Goldblatt <davidgoldblatt@meta.com> | 2023-07-28 12:13:35 -0700 |
commit | d020fa2b29d84b877d1e43dbfb3418275857bf87 (patch) | |
tree | 81bd7032efe78f5a005f2c0abfdf1a9e914e201a /llvm/lib/Analysis/BasicAliasAnalysis.cpp | |
parent | c75b331fc23192a8249dc5e95e053258f5fb5194 (diff) | |
download | llvm-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.cpp | 18 |
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 |