[llvm-branch-commits] [llvm] 81dd9f5 - Revert "[AA] Move Target Specific AA before BasicAA (#125965)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed May 7 16:30:44 PDT 2025


Author: Chengjun
Date: 2025-05-07T16:30:42-07:00
New Revision: 81dd9f5f4b1d6d76d967c24924eb41b9eb1ad639

URL: https://github.com/llvm/llvm-project/commit/81dd9f5f4b1d6d76d967c24924eb41b9eb1ad639
DIFF: https://github.com/llvm/llvm-project/commit/81dd9f5f4b1d6d76d967c24924eb41b9eb1ad639.diff

LOG: Revert "[AA] Move Target Specific AA before BasicAA (#125965)"

This reverts commit 94d933676c34c9179bf55387d3f9b97e12fae94b.

Added: 
    

Modified: 
    llvm/include/llvm/Analysis/AliasAnalysis.h
    llvm/include/llvm/Target/TargetMachine.h
    llvm/lib/Analysis/AliasAnalysis.cpp
    llvm/lib/Passes/PassBuilderPipelines.cpp
    llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h
    llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
    llvm/lib/Target/NVPTX/NVPTXTargetMachine.h

Removed: 
    llvm/test/Analysis/NVPTXAA/NVPTXAA_before_BasicAA.ll


################################################################################
diff  --git a/llvm/include/llvm/Analysis/AliasAnalysis.h b/llvm/include/llvm/Analysis/AliasAnalysis.h
index d23b81854c9ea..b3b44a50ca827 100644
--- a/llvm/include/llvm/Analysis/AliasAnalysis.h
+++ b/llvm/include/llvm/Analysis/AliasAnalysis.h
@@ -1013,18 +1013,6 @@ struct ExternalAAWrapperPass : ImmutablePass {
 
   explicit ExternalAAWrapperPass(CallbackT CB);
 
-  /// Returns 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.
-  ///
-  /// 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; }
-
   void getAnalysisUsage(AnalysisUsage &AU) const override {
     AU.setPreservesAll();
   }

diff  --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h
index 906926729ed74..566e7dba6792b 100644
--- a/llvm/include/llvm/Target/TargetMachine.h
+++ b/llvm/include/llvm/Target/TargetMachine.h
@@ -396,11 +396,6 @@ class TargetMachine {
   // TODO: Populate all pass names by using <Target>PassRegistry.def.
   virtual void registerPassBuilderCallbacks(PassBuilder &) {}
 
-  /// Allow the target to register early alias analyses (AA before BasicAA) with
-  /// the AAManager for use with the new pass manager. Only affects the
-  /// "default" AAManager.
-  virtual void registerEarlyDefaultAliasAnalyses(AAManager &) {}
-
   /// Allow the target to register alias analyses with the AAManager for use
   /// with the new pass manager. Only affects the "default" AAManager.
   virtual void registerDefaultAliasAnalyses(AAManager &) {}

diff  --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp
index 27bd179a58ede..f4946c30de9bc 100644
--- a/llvm/lib/Analysis/AliasAnalysis.cpp
+++ b/llvm/lib/Analysis/AliasAnalysis.cpp
@@ -739,49 +739,28 @@ bool AAResultsWrapperPass::runOnFunction(Function &F) {
   AAR.reset(
       new AAResults(getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F)));
 
-  // Add any target-specific alias analyses that should be run early.
-  auto *ExtWrapperPass = getAnalysisIfAvailable<ExternalAAWrapperPass>();
-  if (ExtWrapperPass && ExtWrapperPass->runEarly() && ExtWrapperPass->CB) {
-    LLVM_DEBUG(dbgs() << "AAResults register Early ExternalAA: "
-                      << ExtWrapperPass->getPassName() << "\n");
-    ExtWrapperPass->CB(*this, F, *AAR);
-  }
-
   // BasicAA is always available for function analyses. Also, we add it first
   // so that it can trump TBAA results when it proves MustAlias.
   // FIXME: TBAA should have an explicit mode to support this and then we
   // should reconsider the ordering here.
-  if (!DisableBasicAA) {
-    LLVM_DEBUG(dbgs() << "AAResults register BasicAA\n");
+  if (!DisableBasicAA)
     AAR->addAAResult(getAnalysis<BasicAAWrapperPass>().getResult());
-  }
 
   // Populate the results with the currently available AAs.
-  if (auto *WrapperPass =
-          getAnalysisIfAvailable<ScopedNoAliasAAWrapperPass>()) {
-    LLVM_DEBUG(dbgs() << "AAResults register ScopedNoAliasAA\n");
+  if (auto *WrapperPass = getAnalysisIfAvailable<ScopedNoAliasAAWrapperPass>())
     AAR->addAAResult(WrapperPass->getResult());
-  }
-  if (auto *WrapperPass = getAnalysisIfAvailable<TypeBasedAAWrapperPass>()) {
-    LLVM_DEBUG(dbgs() << "AAResults register TypeBasedAA\n");
+  if (auto *WrapperPass = getAnalysisIfAvailable<TypeBasedAAWrapperPass>())
     AAR->addAAResult(WrapperPass->getResult());
-  }
-  if (auto *WrapperPass = getAnalysisIfAvailable<GlobalsAAWrapperPass>()) {
-    LLVM_DEBUG(dbgs() << "AAResults register GlobalsAA\n");
+  if (auto *WrapperPass = getAnalysisIfAvailable<GlobalsAAWrapperPass>())
     AAR->addAAResult(WrapperPass->getResult());
-  }
-  if (auto *WrapperPass = getAnalysisIfAvailable<SCEVAAWrapperPass>()) {
-    LLVM_DEBUG(dbgs() << "AAResults register SCEVAA\n");
+  if (auto *WrapperPass = getAnalysisIfAvailable<SCEVAAWrapperPass>())
     AAR->addAAResult(WrapperPass->getResult());
-  }
 
   // If available, run an external AA providing callback over the results as
   // well.
-  if (ExtWrapperPass && !ExtWrapperPass->runEarly() && ExtWrapperPass->CB) {
-    LLVM_DEBUG(dbgs() << "AAResults register Late ExternalAA: "
-                      << ExtWrapperPass->getPassName() << "\n");
-    ExtWrapperPass->CB(*this, F, *AAR);
-  }
+  if (auto *WrapperPass = getAnalysisIfAvailable<ExternalAAWrapperPass>())
+    if (WrapperPass->CB)
+      WrapperPass->CB(*this, F, *AAR);
 
   // Analyses don't mutate the IR, so return false.
   return false;

diff  --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index 5a85b308925a6..f172271be09ab 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -2320,10 +2320,6 @@ AAManager PassBuilder::buildDefaultAAPipeline() {
   // The order in which these are registered determines their priority when
   // being queried.
 
-  // Add any target-specific alias analyses that should be run early.
-  if (TM)
-    TM->registerEarlyDefaultAliasAnalyses(AA);
-
   // First we register the basic alias analysis that provides the majority of
   // per-function local AA logic. This is a stateless, on-demand local set of
   // AA techniques.

diff  --git a/llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h b/llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h
index 430fcd741c1b6..a82c3aaa72423 100644
--- a/llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h
+++ b/llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h
@@ -85,23 +85,16 @@ class NVPTXAAWrapperPass : public ImmutablePass {
 
 // Wrapper around ExternalAAWrapperPass so that the default
 // constructor gets the callback.
-// Note that NVPTXAA will run before BasicAA for compile time considerations.
 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());
         }) {}
-
-  StringRef getPassName() const override {
-    return "NVPTX Address space based Alias Analysis Wrapper";
-  }
 };
 
 ImmutablePass *createNVPTXAAWrapperPass();

diff  --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
index 85d28a703a4cb..f2e149063764d 100644
--- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
@@ -234,7 +234,7 @@ MachineFunctionInfo *NVPTXTargetMachine::createMachineFunctionInfo(
                                                                     F, STI);
 }
 
-void NVPTXTargetMachine::registerEarlyDefaultAliasAnalyses(AAManager &AAM) {
+void NVPTXTargetMachine::registerDefaultAliasAnalyses(AAManager &AAM) {
   AAM.registerFunctionAnalysis<NVPTXAA>();
 }
 
@@ -349,7 +349,10 @@ void NVPTXPassConfig::addIRPasses() {
   disablePass(&RemoveLoadsIntoFakeUsesID);
 
   addPass(createNVPTXAAWrapperPass());
-  addPass(createNVPTXExternalAAWrapperPass());
+  addPass(createExternalAAWrapperPass([](Pass &P, Function &, AAResults &AAR) {
+    if (auto *WrapperPass = P.getAnalysisIfAvailable<NVPTXAAWrapperPass>())
+      AAR.addAAResult(WrapperPass->getResult());
+  }));
 
   // NVVMReflectPass is added in addEarlyAsPossiblePasses, so hopefully running
   // it here does nothing.  But since we need it for correctness when lowering

diff  --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.h b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.h
index 118a01a0352f5..34d841cd28404 100644
--- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.h
+++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.h
@@ -64,7 +64,7 @@ class NVPTXTargetMachine : public CodeGenTargetMachineImpl {
   createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,
                             const TargetSubtargetInfo *STI) const override;
 
-  void registerEarlyDefaultAliasAnalyses(AAManager &AAM) override;
+  void registerDefaultAliasAnalyses(AAManager &AAM) override;
 
   void registerPassBuilderCallbacks(PassBuilder &PB) override;
 

diff  --git a/llvm/test/Analysis/NVPTXAA/NVPTXAA_before_BasicAA.ll b/llvm/test/Analysis/NVPTXAA/NVPTXAA_before_BasicAA.ll
deleted file mode 100644
index 0d16b344e9f66..0000000000000
--- a/llvm/test/Analysis/NVPTXAA/NVPTXAA_before_BasicAA.ll
+++ /dev/null
@@ -1,17 +0,0 @@
-; REQUIRES: asserts
-; RUN: opt -aa-pipeline=default -passes='require<aa>' -debug-pass-manager -disable-output -S < %s 2>&1 | FileCheck %s
-; RUN: llc --debug-only='aa' -o /dev/null %s 2>&1 | FileCheck %s -check-prefix=LEGACY
-
-; In default AA pipeline, NVPTXAA should run before BasicAA to reduce compile time for NVPTX backend
-target triple = "nvptx64-nvidia-cuda"
-
-; CHECK: Running analysis: NVPTXAA on foo
-; CHECK-NEXT: Running analysis: BasicAA on foo
-
-; LEGACY: AAResults register Early ExternalAA: NVPTX Address space based Alias Analysis Wrapper
-; LEGACY-NEXT: AAResults register BasicAA
-define void @foo(){
-entry:
-  ret void
-}
-


        


More information about the llvm-branch-commits mailing list