From 02db00b78f9cc653df87fd908bfa2f51b21c1f47 Mon Sep 17 00:00:00 2001 From: Akshat Oke Date: Mon, 20 Jan 2025 06:35:48 +0000 Subject: [PATCH 1/2] [NewPM] LiveIntervals: Check dependencies for invalidation --- llvm/include/llvm/CodeGen/LiveIntervals.h | 3 +++ llvm/lib/CodeGen/LiveIntervals.cpp | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/llvm/include/llvm/CodeGen/LiveIntervals.h b/llvm/include/llvm/CodeGen/LiveIntervals.h index 161bb247a0e96..540651ea11442 100644 --- a/llvm/include/llvm/CodeGen/LiveIntervals.h +++ b/llvm/include/llvm/CodeGen/LiveIntervals.h @@ -113,6 +113,9 @@ class LiveIntervals { LiveIntervals(LiveIntervals &&) = default; ~LiveIntervals(); + bool invalidate(MachineFunction &MF, const PreservedAnalyses &PA, + MachineFunctionAnalysisManager::Invalidator &Inv); + /// Calculate the spill weight to assign to a single instruction. /// If \p PSI is provided the calculation is altered for optsize functions. static float getSpillWeight(bool isDef, bool isUse, diff --git a/llvm/lib/CodeGen/LiveIntervals.cpp b/llvm/lib/CodeGen/LiveIntervals.cpp index f38527a3ce6a3..64c184f5553ab 100644 --- a/llvm/lib/CodeGen/LiveIntervals.cpp +++ b/llvm/lib/CodeGen/LiveIntervals.cpp @@ -127,6 +127,20 @@ LiveIntervalsWrapperPass::LiveIntervalsWrapperPass() : MachineFunctionPass(ID) { LiveIntervals::~LiveIntervals() { clear(); } +bool LiveIntervals::invalidate( + MachineFunction &MF, const PreservedAnalyses &PA, + MachineFunctionAnalysisManager::Invalidator &Inv) { + auto PAC = PA.getChecker(); + + if (!PAC.preserved() && !PAC.preservedSet>()) + return true; + + // LiveIntervals holds pointers to these results, so check for their + // invalidation. + return (Inv.invalidate(MF, PA) || + Inv.invalidate(MF, PA)); +} + void LiveIntervals::clear() { // Free the live intervals themselves. for (unsigned i = 0, e = VirtRegIntervals.size(); i != e; ++i) From 1549605490723ee0514cfc5f1fdba5a03a11cf89 Mon Sep 17 00:00:00 2001 From: Akshat Oke Date: Mon, 20 Jan 2025 11:30:44 +0000 Subject: [PATCH 2/2] remove parenthesis --- llvm/lib/CodeGen/LiveIntervals.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/LiveIntervals.cpp b/llvm/lib/CodeGen/LiveIntervals.cpp index 64c184f5553ab..4fdfcf547542d 100644 --- a/llvm/lib/CodeGen/LiveIntervals.cpp +++ b/llvm/lib/CodeGen/LiveIntervals.cpp @@ -137,8 +137,8 @@ bool LiveIntervals::invalidate( // LiveIntervals holds pointers to these results, so check for their // invalidation. - return (Inv.invalidate(MF, PA) || - Inv.invalidate(MF, PA)); + return Inv.invalidate(MF, PA) || + Inv.invalidate(MF, PA); } void LiveIntervals::clear() {