[llvm] 3bfd1f0 - [AA] Make LI and EphValues option in EarliestEscapeInfo (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 20 06:13:08 PDT 2023
Author: Nikita Popov
Date: 2023-10-20T15:13:00+02:00
New Revision: 3bfd1f09136915b5f6bc85079425ffc07efd13e6
URL: https://github.com/llvm/llvm-project/commit/3bfd1f09136915b5f6bc85079425ffc07efd13e6
DIFF: https://github.com/llvm/llvm-project/commit/3bfd1f09136915b5f6bc85079425ffc07efd13e6.diff
LOG: [AA] Make LI and EphValues option in EarliestEscapeInfo (NFC)
To allow using it in places where these may not be available.
Added:
Modified:
llvm/include/llvm/Analysis/AliasAnalysis.h
llvm/include/llvm/Analysis/CaptureTracking.h
llvm/lib/Analysis/BasicAliasAnalysis.cpp
llvm/lib/Analysis/CaptureTracking.cpp
llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/AliasAnalysis.h b/llvm/include/llvm/Analysis/AliasAnalysis.h
index 4f06ae1d38c6aa4..a69c4adf28fed04 100644
--- a/llvm/include/llvm/Analysis/AliasAnalysis.h
+++ b/llvm/include/llvm/Analysis/AliasAnalysis.h
@@ -172,7 +172,7 @@ class SimpleCaptureInfo final : public CaptureInfo {
/// approximation to a precise "captures before" analysis.
class EarliestEscapeInfo final : public CaptureInfo {
DominatorTree &DT;
- const LoopInfo &LI;
+ const LoopInfo *LI;
/// Map from identified local object to an instruction before which it does
/// not escape, or nullptr if it never escapes. The "earliest" instruction
@@ -184,11 +184,11 @@ class EarliestEscapeInfo final : public CaptureInfo {
/// This is used for cache invalidation purposes.
DenseMap<Instruction *, TinyPtrVector<const Value *>> Inst2Obj;
- const SmallPtrSetImpl<const Value *> &EphValues;
+ const SmallPtrSetImpl<const Value *> *EphValues;
public:
- EarliestEscapeInfo(DominatorTree &DT, const LoopInfo &LI,
- const SmallPtrSetImpl<const Value *> &EphValues)
+ EarliestEscapeInfo(DominatorTree &DT, const LoopInfo *LI = nullptr,
+ const SmallPtrSetImpl<const Value *> *EphValues = nullptr)
: DT(DT), LI(LI), EphValues(EphValues) {}
bool isNotCapturedBeforeOrAt(const Value *Object,
diff --git a/llvm/include/llvm/Analysis/CaptureTracking.h b/llvm/include/llvm/Analysis/CaptureTracking.h
index a2d9277745e42f5..6589c2b86363c0a 100644
--- a/llvm/include/llvm/Analysis/CaptureTracking.h
+++ b/llvm/include/llvm/Analysis/CaptureTracking.h
@@ -83,7 +83,7 @@ namespace llvm {
Instruction *
FindEarliestCapture(const Value *V, Function &F, bool ReturnCaptures,
bool StoreCaptures, const DominatorTree &DT,
- const SmallPtrSetImpl<const Value *> &EphValues,
+ const SmallPtrSetImpl<const Value *> *EphValues = nullptr,
unsigned MaxUsesToExplore = 0);
/// This callback is used in conjunction with PointerMayBeCaptured. In
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index ca65abeb591c561..3e5997081647749 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -219,7 +219,7 @@ bool EarliestEscapeInfo::isNotCapturedBeforeOrAt(const Value *Object,
return true;
return I != Iter.first->second &&
- !isPotentiallyReachable(Iter.first->second, I, nullptr, &DT, &LI);
+ !isPotentiallyReachable(Iter.first->second, I, nullptr, &DT, LI);
}
void EarliestEscapeInfo::removeInstruction(Instruction *I) {
diff --git a/llvm/lib/Analysis/CaptureTracking.cpp b/llvm/lib/Analysis/CaptureTracking.cpp
index 2827eb705ac58c7..2b93620548341a6 100644
--- a/llvm/lib/Analysis/CaptureTracking.cpp
+++ b/llvm/lib/Analysis/CaptureTracking.cpp
@@ -167,7 +167,7 @@ namespace {
struct EarliestCaptures : public CaptureTracker {
EarliestCaptures(bool ReturnCaptures, Function &F, const DominatorTree &DT,
- const SmallPtrSetImpl<const Value *> &EphValues)
+ const SmallPtrSetImpl<const Value *> *EphValues)
: EphValues(EphValues), DT(DT), ReturnCaptures(ReturnCaptures), F(F) {}
void tooManyUses() override {
@@ -180,7 +180,7 @@ namespace {
if (isa<ReturnInst>(I) && !ReturnCaptures)
return false;
- if (EphValues.contains(I))
+ if (EphValues && EphValues->contains(I))
return false;
if (!EarliestCapture)
@@ -194,7 +194,7 @@ namespace {
return false;
}
- const SmallPtrSetImpl<const Value *> &EphValues;
+ const SmallPtrSetImpl<const Value *> *EphValues;
Instruction *EarliestCapture = nullptr;
@@ -286,8 +286,7 @@ bool llvm::PointerMayBeCapturedBefore(const Value *V, bool ReturnCaptures,
Instruction *
llvm::FindEarliestCapture(const Value *V, Function &F, bool ReturnCaptures,
bool StoreCaptures, const DominatorTree &DT,
-
- const SmallPtrSetImpl<const Value *> &EphValues,
+ const SmallPtrSetImpl<const Value *> *EphValues,
unsigned MaxUsesToExplore) {
assert(!isa<GlobalValue>(V) &&
"It doesn't make sense to ask whether a global is captured.");
diff --git a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
index 0586ff191d94ed1..026758e3206ea66 100644
--- a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
+++ b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
@@ -865,7 +865,7 @@ struct DSEState {
DSEState(Function &F, AliasAnalysis &AA, MemorySSA &MSSA, DominatorTree &DT,
PostDominatorTree &PDT, AssumptionCache &AC,
const TargetLibraryInfo &TLI, const LoopInfo &LI)
- : F(F), AA(AA), EI(DT, LI, EphValues), BatchAA(AA, &EI), MSSA(MSSA),
+ : F(F), AA(AA), EI(DT, &LI, &EphValues), BatchAA(AA, &EI), MSSA(MSSA),
DT(DT), PDT(PDT), TLI(TLI), DL(F.getParent()->getDataLayout()), LI(LI) {
// Collect blocks with throwing instructions not modeled in MemorySSA and
// alloc-like objects.
More information about the llvm-commits
mailing list