[llvm] 682a976 - [AA] Change RunEarly to be a Boolean Flag in ExternalAAWrapper (#139158)
via llvm-commits
llvm-commits at lists.llvm.org
Thu May 15 10:33:59 PDT 2025
Author: Chengjun
Date: 2025-05-15T10:33:55-07:00
New Revision: 682a976768b274c71ebd42198d1bbf0f27fec1e2
URL: https://github.com/llvm/llvm-project/commit/682a976768b274c71ebd42198d1bbf0f27fec1e2
DIFF: https://github.com/llvm/llvm-project/commit/682a976768b274c71ebd42198d1bbf0f27fec1e2.diff
LOG: [AA] Change RunEarly to be a Boolean Flag in ExternalAAWrapper (#139158)
Change the previous runEarly virtual function in ExternalAAWrapper to be
a boolean flag.
Added:
Modified:
llvm/include/llvm/Analysis/AliasAnalysis.h
llvm/lib/Analysis/AliasAnalysis.cpp
llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/AliasAnalysis.h b/llvm/include/llvm/Analysis/AliasAnalysis.h
index d23b81854c9ea..16f54c394788d 100644
--- a/llvm/include/llvm/Analysis/AliasAnalysis.h
+++ b/llvm/include/llvm/Analysis/AliasAnalysis.h
@@ -1011,19 +1011,24 @@ struct ExternalAAWrapperPass : ImmutablePass {
ExternalAAWrapperPass();
- explicit ExternalAAWrapperPass(CallbackT CB);
+ explicit ExternalAAWrapperPass(CallbackT CB, bool RunEarly = false);
- /// Returns whether this external AA should run before Basic AA.
+ /// Flag indicating whether this external AA should run before Basic AA.
///
- /// By default, external AA passes are run after Basic AA. If this returns
- /// true, the external AA will be run before Basic AA during alias analysis.
+ /// This flag is for LegacyPassManager only. To run an external AA early
+ /// with the NewPassManager, override the registerEarlyDefaultAliasAnalyses
+ /// method on the target machine.
+ ///
+ /// By default, external AA passes are run after Basic AA. If this flag is
+ /// set to true, the external AA will be run before Basic AA during alias
+ /// analysis.
///
/// For some targets, we prefer to run the external AA early to improve
/// compile time as it has more target-specific information. This is
/// particularly useful when the external AA can provide more precise results
/// than Basic AA so that Basic AA does not need to spend time recomputing
/// them.
- virtual bool runEarly() { return false; }
+ bool RunEarly = false;
void getAnalysisUsage(AnalysisUsage &AU) const override {
AU.setPreservesAll();
diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp
index 27bd179a58ede..2afabb75c7cc5 100644
--- a/llvm/lib/Analysis/AliasAnalysis.cpp
+++ b/llvm/lib/Analysis/AliasAnalysis.cpp
@@ -693,8 +693,8 @@ AnalysisKey AAManager::Key;
ExternalAAWrapperPass::ExternalAAWrapperPass() : ImmutablePass(ID) {}
-ExternalAAWrapperPass::ExternalAAWrapperPass(CallbackT CB)
- : ImmutablePass(ID), CB(std::move(CB)) {}
+ExternalAAWrapperPass::ExternalAAWrapperPass(CallbackT CB, bool RunEarly)
+ : ImmutablePass(ID), CB(std::move(CB)), RunEarly(RunEarly) {}
char ExternalAAWrapperPass::ID = 0;
@@ -741,7 +741,7 @@ bool AAResultsWrapperPass::runOnFunction(Function &F) {
// Add any target-specific alias analyses that should be run early.
auto *ExtWrapperPass = getAnalysisIfAvailable<ExternalAAWrapperPass>();
- if (ExtWrapperPass && ExtWrapperPass->runEarly() && ExtWrapperPass->CB) {
+ if (ExtWrapperPass && ExtWrapperPass->RunEarly && ExtWrapperPass->CB) {
LLVM_DEBUG(dbgs() << "AAResults register Early ExternalAA: "
<< ExtWrapperPass->getPassName() << "\n");
ExtWrapperPass->CB(*this, F, *AAR);
@@ -777,7 +777,7 @@ bool AAResultsWrapperPass::runOnFunction(Function &F) {
// If available, run an external AA providing callback over the results as
// well.
- if (ExtWrapperPass && !ExtWrapperPass->runEarly() && ExtWrapperPass->CB) {
+ if (ExtWrapperPass && !ExtWrapperPass->RunEarly && ExtWrapperPass->CB) {
LLVM_DEBUG(dbgs() << "AAResults register Late ExternalAA: "
<< ExtWrapperPass->getPassName() << "\n");
ExtWrapperPass->CB(*this, F, *AAR);
diff --git a/llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h b/llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h
index 430fcd741c1b6..caef8fe790adb 100644
--- a/llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h
+++ b/llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h
@@ -90,14 +90,14 @@ class NVPTXExternalAAWrapper : public ExternalAAWrapperPass {
public:
static char ID;
- bool runEarly() override { return true; }
-
NVPTXExternalAAWrapper()
- : ExternalAAWrapperPass([](Pass &P, Function &, AAResults &AAR) {
- if (auto *WrapperPass =
- P.getAnalysisIfAvailable<NVPTXAAWrapperPass>())
- AAR.addAAResult(WrapperPass->getResult());
- }) {}
+ : ExternalAAWrapperPass(
+ [](Pass &P, Function &, AAResults &AAR) {
+ if (auto *WrapperPass =
+ P.getAnalysisIfAvailable<NVPTXAAWrapperPass>())
+ AAR.addAAResult(WrapperPass->getResult());
+ },
+ /*RunEarly=*/true) {}
StringRef getPassName() const override {
return "NVPTX Address space based Alias Analysis Wrapper";
More information about the llvm-commits
mailing list