[PATCH] D113210: [NewPM] Use the default AA pipeline by default

2021-11-05 Thread Arthur Eubanks via Phabricator via cfe-commits
aeubanks added a comment.

fixed with 7f62759697762473 



Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113210/new/

https://reviews.llvm.org/D113210

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D113210: [NewPM] Use the default AA pipeline by default

2021-11-05 Thread Arthur Eubanks via Phabricator via cfe-commits
aeubanks added a comment.

In D113210#3110780 , @Meinersbur 
wrote:

> This change caused the Polly build to fail: 
> https://lab.llvm.org/buildbot/#/builders/10/builds/7501
>
>   opt: 
> /home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.src/llvm/include/llvm/IR/PassManager.h:784:
>  typename PassT::Result& llvm::AnalysisManager ExtraArgTs>::getResult(IRUnitT&, ExtraArgTs ...) [with PassT = 
> llvm::OuterAnalysisManagerProxy, 
> llvm::Function>; IRUnitT = llvm::Function; ExtraArgTs = {}; typename 
> PassT::Result = 
> llvm::OuterAnalysisManagerProxy, 
> llvm::Function>::Result]: Assertion `AnalysisPasses.count(PassT::ID()) && 
> "This analysis pass was not registered prior to being queried"' failed.
>   PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash 
> backtrace.
>   Stack dump:
>   0.  Program arguments: 
> /home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/bin/opt 
> -polly-process-unprofitable -polly-remarks-minimal -polly-use-llvm-names 
> -polly-import-jscop-dir=/home/worker/src/llvm-project/polly/test/ScopInliner 
> -polly-codegen-verify -polly-detect-full-functions -polly-scop-inliner 
> -polly-scops -analyze
>   1.  Running pass 'CallGraph Pass Manager' on module ''.
>#0 0x7fcc7bb29644 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
>#1 0x7fcc7bb26d5e SignalHandler(int) Signals.cpp:0:0
>#2 0x7fcc7b541210 (/lib/x86_64-linux-gnu/libc.so.6+0x46210)
>#3 0x7fcc7b54118b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618b)
>#4 0x7fcc7b520859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x25859)
>#5 0x7fcc7b520729 (/lib/x86_64-linux-gnu/libc.so.6+0x25729)
>#6 0x7fcc7b531f36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36)
>#7 0x7fcc7dbcb34f void 
> llvm::AAManager::getModuleAAResultImpl(llvm::Function&, 
> llvm::AnalysisManager&, llvm::AAResults&) PassBuilder.cpp:0:0
>#8 0x7fcc7c3c5363 llvm::AAManager::run(llvm::Function&, 
> llvm::AnalysisManager&) 
> (/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libLLVMAnalysis.so.14git+0x257363)
>#9 0x563487033358 llvm::detail::AnalysisPassModel llvm::AAManager, llvm::PreservedAnalyses, 
> llvm::AnalysisManager::Invalidator>::run(llvm::Function&, 
> llvm::AnalysisManager&) NewPMDriver.cpp:0:0
>   #10 0x7fcc7bf95dd8 
> llvm::AnalysisManager::getResultImpl(llvm::AnalysisKey*, 
> llvm::Function&) 
> (/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libLLVMCore.so.14git+0x450dd8)
>   #11 0x7fcc7e84892a polly::ScopAnalysis::run(llvm::Function&, 
> llvm::AnalysisManager&) 
> (/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libPolly.so.14git+0x13c92a)
>   #12 0x7fcc7e962aa4 llvm::detail::AnalysisPassModel polly::ScopAnalysis, llvm::PreservedAnalyses, 
> llvm::AnalysisManager::Invalidator>::run(llvm::Function&, 
> llvm::AnalysisManager&) RegisterPasses.cpp:0:0
>   #13 0x7fcc7bf95dd8 
> llvm::AnalysisManager::getResultImpl(llvm::AnalysisKey*, 
> llvm::Function&) 
> (/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libLLVMCore.so.14git+0x450dd8)
>   #14 0x7fcc7e9d7d7c (anonymous 
> namespace)::ScopInliner::runOnSCC(llvm::CallGraphSCC&) ScopInliner.cpp:0:0
>   #15 0x7fcc7c46dfef (anonymous 
> namespace)::CGPassManager::runOnModule(llvm::Module&) CallGraphSCCPass.cpp:0:0
>   #16 0x7fcc7bf4dee2 llvm::legacy::PassManagerImpl::run(llvm::Module&) 
> (/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libLLVMCore.so.14git+0x408ee2)
>   #17 0x563487054571 main 
> (/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/bin/opt+0x48571)
>   #18 0x7fcc7b5220b3 __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x270b3)
>   #19 0x563487030c8e _start 
> (/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/bin/opt+0x24c8e)
>
> Polly is not using custom AliasAnalysis. Any idea how to fix this?
>
> Btw, the pre-merge check failed because of this as well.

Sorry about that, I saw the legacy pass manager infra stack frames and assumed 
this wasn't related to my patch.
I'll send out a fix.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113210/new/

https://reviews.llvm.org/D113210

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D113210: [NewPM] Use the default AA pipeline by default

2021-11-05 Thread Michael Kruse via Phabricator via cfe-commits
Meinersbur added a comment.

This change caused the Polly build to fail: 
https://lab.llvm.org/buildbot/#/builders/10/builds/7501

  opt: 
/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.src/llvm/include/llvm/IR/PassManager.h:784:
 typename PassT::Result& llvm::AnalysisManager::getResult(IRUnitT&, ExtraArgTs ...) [with PassT = 
llvm::OuterAnalysisManagerProxy, 
llvm::Function>; IRUnitT = llvm::Function; ExtraArgTs = {}; typename 
PassT::Result = 
llvm::OuterAnalysisManagerProxy, 
llvm::Function>::Result]: Assertion `AnalysisPasses.count(PassT::ID()) && "This 
analysis pass was not registered prior to being queried"' failed.
  PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash 
backtrace.
  Stack dump:
  0.Program arguments: 
/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/bin/opt 
-polly-process-unprofitable -polly-remarks-minimal -polly-use-llvm-names 
-polly-import-jscop-dir=/home/worker/src/llvm-project/polly/test/ScopInliner 
-polly-codegen-verify -polly-detect-full-functions -polly-scop-inliner 
-polly-scops -analyze
  1.Running pass 'CallGraph Pass Manager' on module ''.
   #0 0x7fcc7bb29644 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
   #1 0x7fcc7bb26d5e SignalHandler(int) Signals.cpp:0:0
   #2 0x7fcc7b541210 (/lib/x86_64-linux-gnu/libc.so.6+0x46210)
   #3 0x7fcc7b54118b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618b)
   #4 0x7fcc7b520859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x25859)
   #5 0x7fcc7b520729 (/lib/x86_64-linux-gnu/libc.so.6+0x25729)
   #6 0x7fcc7b531f36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36)
   #7 0x7fcc7dbcb34f void 
llvm::AAManager::getModuleAAResultImpl(llvm::Function&, 
llvm::AnalysisManager&, llvm::AAResults&) PassBuilder.cpp:0:0
   #8 0x7fcc7c3c5363 llvm::AAManager::run(llvm::Function&, 
llvm::AnalysisManager&) 
(/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libLLVMAnalysis.so.14git+0x257363)
   #9 0x563487033358 llvm::detail::AnalysisPassModel::Invalidator>::run(llvm::Function&, 
llvm::AnalysisManager&) NewPMDriver.cpp:0:0
  #10 0x7fcc7bf95dd8 
llvm::AnalysisManager::getResultImpl(llvm::AnalysisKey*, 
llvm::Function&) 
(/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libLLVMCore.so.14git+0x450dd8)
  #11 0x7fcc7e84892a polly::ScopAnalysis::run(llvm::Function&, 
llvm::AnalysisManager&) 
(/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libPolly.so.14git+0x13c92a)
  #12 0x7fcc7e962aa4 llvm::detail::AnalysisPassModel::Invalidator>::run(llvm::Function&, 
llvm::AnalysisManager&) RegisterPasses.cpp:0:0
  #13 0x7fcc7bf95dd8 
llvm::AnalysisManager::getResultImpl(llvm::AnalysisKey*, 
llvm::Function&) 
(/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libLLVMCore.so.14git+0x450dd8)
  #14 0x7fcc7e9d7d7c (anonymous 
namespace)::ScopInliner::runOnSCC(llvm::CallGraphSCC&) ScopInliner.cpp:0:0
  #15 0x7fcc7c46dfef (anonymous 
namespace)::CGPassManager::runOnModule(llvm::Module&) CallGraphSCCPass.cpp:0:0
  #16 0x7fcc7bf4dee2 llvm::legacy::PassManagerImpl::run(llvm::Module&) 
(/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/./lib/libLLVMCore.so.14git+0x408ee2)
  #17 0x563487054571 main 
(/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/bin/opt+0x48571)
  #18 0x7fcc7b5220b3 __libc_start_main 
(/lib/x86_64-linux-gnu/libc.so.6+0x270b3)
  #19 0x563487030c8e _start 
(/home/worker/buildbot-workers/polly-x86_64-gce1/rundir/llvm.obj/bin/opt+0x24c8e)

Polly is not using custom AliasAnalysis. Any idea how to fix this?

Btw, the pre-merge check failed because of this as well.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113210/new/

https://reviews.llvm.org/D113210

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D113210: [NewPM] Use the default AA pipeline by default

2021-11-04 Thread Arthur Eubanks via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG13317286f829: [NewPM] Use the default AA pipeline by default 
(authored by aeubanks).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113210/new/

https://reviews.llvm.org/D113210

Files:
  clang/lib/CodeGen/BackendUtil.cpp
  llvm/lib/LTO/LTOBackend.cpp
  llvm/lib/LTO/ThinLTOCodeGenerator.cpp
  llvm/lib/Passes/PassBuilder.cpp
  llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp


Index: llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
===
--- llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
+++ llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
@@ -144,7 +144,6 @@
   ModulePassManager MPM;
   ModuleAnalysisManager MAM;
 
-  FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
   PB.registerFunctionAnalyses(FAM);
Index: llvm/lib/Passes/PassBuilder.cpp
===
--- llvm/lib/Passes/PassBuilder.cpp
+++ llvm/lib/Passes/PassBuilder.cpp
@@ -413,6 +413,11 @@
 }
 
 void PassBuilder::registerFunctionAnalyses(FunctionAnalysisManager ) {
+  // We almost always want the default alias analysis pipeline.
+  // If a user wants a different one, they can register their own before 
calling
+  // registerFunctionAnalyses().
+  FAM.registerPass([&] { return buildDefaultAAPipeline(); });
+
 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS)   
\
   FAM.registerPass([&] { return CREATE_PASS; });
 #include "PassRegistry.def"
Index: llvm/lib/LTO/ThinLTOCodeGenerator.cpp
===
--- llvm/lib/LTO/ThinLTOCodeGenerator.cpp
+++ llvm/lib/LTO/ThinLTOCodeGenerator.cpp
@@ -291,11 +291,6 @@
 TLII->disableAllFunctions();
   FAM.registerPass([&] { return TargetLibraryAnalysis(*TLII); });
 
-  AAManager AA = PB.buildDefaultAAPipeline();
-
-  // Register the AA manager first so that our version is the one used.
-  FAM.registerPass([&] { return std::move(AA); });
-
   // Register all the basic analyses with the managers.
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
Index: llvm/lib/LTO/LTOBackend.cpp
===
--- llvm/lib/LTO/LTOBackend.cpp
+++ llvm/lib/LTO/LTOBackend.cpp
@@ -251,18 +251,16 @@
 TLII->disableAllFunctions();
   FAM.registerPass([&] { return TargetLibraryAnalysis(*TLII); });
 
-  AAManager AA;
   // Parse a custom AA pipeline if asked to.
   if (!Conf.AAPipeline.empty()) {
+AAManager AA;
 if (auto Err = PB.parseAAPipeline(AA, Conf.AAPipeline)) {
   report_fatal_error(Twine("unable to parse AA pipeline description '") +
  Conf.AAPipeline + "': " + toString(std::move(Err)));
 }
-  } else {
-AA = PB.buildDefaultAAPipeline();
+// Register the AA manager first so that our version is the one used.
+FAM.registerPass([&] { return std::move(AA); });
   }
-  // Register the AA manager first so that our version is the one used.
-  FAM.registerPass([&] { return std::move(AA); });
 
   // Register all the basic analyses with the managers.
   PB.registerModuleAnalyses(MAM);
Index: clang/lib/CodeGen/BackendUtil.cpp
===
--- clang/lib/CodeGen/BackendUtil.cpp
+++ clang/lib/CodeGen/BackendUtil.cpp
@@ -1312,9 +1312,6 @@
   get##Ext##PluginInfo().RegisterPassBuilderCallbacks(PB);
 #include "llvm/Support/Extension.def"
 
-  // Register the AA manager first so that our version is the one used.
-  FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
-
   // Register the target library analysis directly and give it a customized
   // preset TLI.
   Triple TargetTriple(TheModule->getTargetTriple());


Index: llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
===
--- llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
+++ llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
@@ -144,7 +144,6 @@
   ModulePassManager MPM;
   ModuleAnalysisManager MAM;
 
-  FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
   PB.registerFunctionAnalyses(FAM);
Index: llvm/lib/Passes/PassBuilder.cpp
===
--- llvm/lib/Passes/PassBuilder.cpp
+++ llvm/lib/Passes/PassBuilder.cpp
@@ -413,6 +413,11 @@
 }
 
 void PassBuilder::registerFunctionAnalyses(FunctionAnalysisManager ) {
+  // We almost always want the default alias analysis pipeline.
+  // If a user wants a different one, they can register their own before calling
+  // registerFunctionAnalyses().
+  FAM.registerPass([&] { return buildDefaultAAPipeline(); });
+
 

[PATCH] D113210: [NewPM] Use the default AA pipeline by default

2021-11-04 Thread Arthur Eubanks via Phabricator via cfe-commits
aeubanks updated this revision to Diff 384842.
aeubanks added a comment.

update LTOBackend.cpp


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113210/new/

https://reviews.llvm.org/D113210

Files:
  clang/lib/CodeGen/BackendUtil.cpp
  llvm/lib/LTO/LTOBackend.cpp
  llvm/lib/LTO/ThinLTOCodeGenerator.cpp
  llvm/lib/Passes/PassBuilder.cpp
  llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp


Index: llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
===
--- llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
+++ llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
@@ -144,7 +144,6 @@
   ModulePassManager MPM;
   ModuleAnalysisManager MAM;
 
-  FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
   PB.registerFunctionAnalyses(FAM);
Index: llvm/lib/Passes/PassBuilder.cpp
===
--- llvm/lib/Passes/PassBuilder.cpp
+++ llvm/lib/Passes/PassBuilder.cpp
@@ -413,6 +413,11 @@
 }
 
 void PassBuilder::registerFunctionAnalyses(FunctionAnalysisManager ) {
+  // We almost always want the default alias analysis pipeline.
+  // If a user wants a different one, they can register their own before 
calling
+  // registerFunctionAnalyses().
+  FAM.registerPass([&] { return buildDefaultAAPipeline(); });
+
 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS)   
\
   FAM.registerPass([&] { return CREATE_PASS; });
 #include "PassRegistry.def"
Index: llvm/lib/LTO/ThinLTOCodeGenerator.cpp
===
--- llvm/lib/LTO/ThinLTOCodeGenerator.cpp
+++ llvm/lib/LTO/ThinLTOCodeGenerator.cpp
@@ -291,11 +291,6 @@
 TLII->disableAllFunctions();
   FAM.registerPass([&] { return TargetLibraryAnalysis(*TLII); });
 
-  AAManager AA = PB.buildDefaultAAPipeline();
-
-  // Register the AA manager first so that our version is the one used.
-  FAM.registerPass([&] { return std::move(AA); });
-
   // Register all the basic analyses with the managers.
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
Index: llvm/lib/LTO/LTOBackend.cpp
===
--- llvm/lib/LTO/LTOBackend.cpp
+++ llvm/lib/LTO/LTOBackend.cpp
@@ -251,18 +251,16 @@
 TLII->disableAllFunctions();
   FAM.registerPass([&] { return TargetLibraryAnalysis(*TLII); });
 
-  AAManager AA;
   // Parse a custom AA pipeline if asked to.
   if (!Conf.AAPipeline.empty()) {
+AAManager AA;
 if (auto Err = PB.parseAAPipeline(AA, Conf.AAPipeline)) {
   report_fatal_error(Twine("unable to parse AA pipeline description '") +
  Conf.AAPipeline + "': " + toString(std::move(Err)));
 }
-  } else {
-AA = PB.buildDefaultAAPipeline();
+// Register the AA manager first so that our version is the one used.
+FAM.registerPass([&] { return std::move(AA); });
   }
-  // Register the AA manager first so that our version is the one used.
-  FAM.registerPass([&] { return std::move(AA); });
 
   // Register all the basic analyses with the managers.
   PB.registerModuleAnalyses(MAM);
Index: clang/lib/CodeGen/BackendUtil.cpp
===
--- clang/lib/CodeGen/BackendUtil.cpp
+++ clang/lib/CodeGen/BackendUtil.cpp
@@ -1312,9 +1312,6 @@
   get##Ext##PluginInfo().RegisterPassBuilderCallbacks(PB);
 #include "llvm/Support/Extension.def"
 
-  // Register the AA manager first so that our version is the one used.
-  FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
-
   // Register the target library analysis directly and give it a customized
   // preset TLI.
   Triple TargetTriple(TheModule->getTargetTriple());


Index: llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
===
--- llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
+++ llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
@@ -144,7 +144,6 @@
   ModulePassManager MPM;
   ModuleAnalysisManager MAM;
 
-  FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
   PB.registerFunctionAnalyses(FAM);
Index: llvm/lib/Passes/PassBuilder.cpp
===
--- llvm/lib/Passes/PassBuilder.cpp
+++ llvm/lib/Passes/PassBuilder.cpp
@@ -413,6 +413,11 @@
 }
 
 void PassBuilder::registerFunctionAnalyses(FunctionAnalysisManager ) {
+  // We almost always want the default alias analysis pipeline.
+  // If a user wants a different one, they can register their own before calling
+  // registerFunctionAnalyses().
+  FAM.registerPass([&] { return buildDefaultAAPipeline(); });
+
 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS)   \
   FAM.registerPass([&] { return CREATE_PASS; });
 

[PATCH] D113210: [NewPM] Use the default AA pipeline by default

2021-11-04 Thread Alina Sbirlea via Phabricator via cfe-commits
asbirlea added a comment.

Can you also update `lib/LTO/LTOBackend.cpp` to something like:

  // Parse a custom AA pipeline if asked to, otherwise the default will be used.
  if (!Conf.AAPipeline.empty()) {
AAManager AA;
if (auto Err = PB.parseAAPipeline(AA, Conf.AAPipeline)) {
  report_fatal_error(Twine("unable to parse AA pipeline description '") +
 Conf.AAPipeline + "': " + toString(std::move(Err)));
}
// Register the AA manager first so that our version is the one used.
FAM.registerPass([&] { return std::move(AA); });
  } 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113210/new/

https://reviews.llvm.org/D113210

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D113210: [NewPM] Use the default AA pipeline by default

2021-11-04 Thread Arthur Eubanks via Phabricator via cfe-commits
aeubanks created this revision.
aeubanks added a reviewer: asbirlea.
Herald added subscribers: ormris, steven_wu, hiraditya.
Herald added a reviewer: ctetreau.
Herald added a reviewer: ctetreau.
aeubanks requested review of this revision.
Herald added projects: clang, LLVM.
Herald added subscribers: llvm-commits, cfe-commits.

We almost always want to use the default AA pipeline. It's very easy for
users of PassBuilder to forget to customize the AAManager to use the
default AA pipeline (for example, the NewPM C API forgets to do this).

If somebody wants a custom AA pipeline, similar to what is being done
now with the default AA pipeline registration, they can

  FAM.registerPass([&] { return std::move(MyAA); });

before calling

  PB.registerFunctionAnalyses(FAM);

For example, LTOBackend.cpp and NewPMDriver.cpp do this.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D113210

Files:
  clang/lib/CodeGen/BackendUtil.cpp
  llvm/lib/LTO/ThinLTOCodeGenerator.cpp
  llvm/lib/Passes/PassBuilder.cpp
  llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp


Index: llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
===
--- llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
+++ llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
@@ -144,7 +144,6 @@
   ModulePassManager MPM;
   ModuleAnalysisManager MAM;
 
-  FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
   PB.registerFunctionAnalyses(FAM);
Index: llvm/lib/Passes/PassBuilder.cpp
===
--- llvm/lib/Passes/PassBuilder.cpp
+++ llvm/lib/Passes/PassBuilder.cpp
@@ -413,6 +413,11 @@
 }
 
 void PassBuilder::registerFunctionAnalyses(FunctionAnalysisManager ) {
+  // We almost always want the default alias analysis pipeline.
+  // If a user wants a different one, they can register their own before 
calling
+  // registerFunctionAnalyses().
+  FAM.registerPass([&] { return buildDefaultAAPipeline(); });
+
 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS)   
\
   FAM.registerPass([&] { return CREATE_PASS; });
 #include "PassRegistry.def"
Index: llvm/lib/LTO/ThinLTOCodeGenerator.cpp
===
--- llvm/lib/LTO/ThinLTOCodeGenerator.cpp
+++ llvm/lib/LTO/ThinLTOCodeGenerator.cpp
@@ -291,11 +291,6 @@
 TLII->disableAllFunctions();
   FAM.registerPass([&] { return TargetLibraryAnalysis(*TLII); });
 
-  AAManager AA = PB.buildDefaultAAPipeline();
-
-  // Register the AA manager first so that our version is the one used.
-  FAM.registerPass([&] { return std::move(AA); });
-
   // Register all the basic analyses with the managers.
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
Index: clang/lib/CodeGen/BackendUtil.cpp
===
--- clang/lib/CodeGen/BackendUtil.cpp
+++ clang/lib/CodeGen/BackendUtil.cpp
@@ -1312,9 +1312,6 @@
   get##Ext##PluginInfo().RegisterPassBuilderCallbacks(PB);
 #include "llvm/Support/Extension.def"
 
-  // Register the AA manager first so that our version is the one used.
-  FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
-
   // Register the target library analysis directly and give it a customized
   // preset TLI.
   Triple TargetTriple(TheModule->getTargetTriple());


Index: llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
===
--- llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
+++ llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
@@ -144,7 +144,6 @@
   ModulePassManager MPM;
   ModuleAnalysisManager MAM;
 
-  FAM.registerPass([&] { return PB.buildDefaultAAPipeline(); });
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
   PB.registerFunctionAnalyses(FAM);
Index: llvm/lib/Passes/PassBuilder.cpp
===
--- llvm/lib/Passes/PassBuilder.cpp
+++ llvm/lib/Passes/PassBuilder.cpp
@@ -413,6 +413,11 @@
 }
 
 void PassBuilder::registerFunctionAnalyses(FunctionAnalysisManager ) {
+  // We almost always want the default alias analysis pipeline.
+  // If a user wants a different one, they can register their own before calling
+  // registerFunctionAnalyses().
+  FAM.registerPass([&] { return buildDefaultAAPipeline(); });
+
 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS)   \
   FAM.registerPass([&] { return CREATE_PASS; });
 #include "PassRegistry.def"
Index: llvm/lib/LTO/ThinLTOCodeGenerator.cpp
===
--- llvm/lib/LTO/ThinLTOCodeGenerator.cpp
+++ llvm/lib/LTO/ThinLTOCodeGenerator.cpp
@@ -291,11 +291,6 @@
 TLII->disableAllFunctions();
   FAM.registerPass([&] { return TargetLibraryAnalysis(*TLII); });
 
-  AAManager AA = PB.buildDefaultAAPipeline();
-
-  //