[PATCH] D82488: [NewPM] Separate out alias analysis passes in opt
Arthur Eubanks via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 24 14:40:55 PDT 2020
aeubanks updated this revision to Diff 273164.
aeubanks added a comment.
Address review
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D82488/new/
https://reviews.llvm.org/D82488
Files:
llvm/include/llvm/Passes/PassBuilder.h
llvm/lib/Passes/PassBuilder.cpp
llvm/tools/opt/NewPMDriver.cpp
Index: llvm/tools/opt/NewPMDriver.cpp
===================================================================
--- llvm/tools/opt/NewPMDriver.cpp
+++ llvm/tools/opt/NewPMDriver.cpp
@@ -14,6 +14,7 @@
#include "NewPMDriver.h"
#include "PassPrinters.h"
+#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/CGSCCPassManager.h"
@@ -310,6 +311,19 @@
errs() << Arg0 << ": " << toString(std::move(Err)) << "\n";
return false;
}
+ // For compatibility with legacy pass manager.
+ // Alias analyses are not specially specified when using the legacy PM.
+ SmallVector<StringRef, 4> NonAAPasses;
+ for (auto PassName : Passes) {
+ if (PB.isAAPassName(PassName)) {
+ if (auto Err = PB.parseAAPipeline(AA, PassName)) {
+ errs() << Arg0 << ": " << toString(std::move(Err)) << "\n";
+ return false;
+ }
+ } else {
+ NonAAPasses.push_back(PassName);
+ }
+ }
LoopAnalysisManager LAM(DebugPM);
FunctionAnalysisManager FAM(DebugPM);
@@ -339,7 +353,7 @@
return false;
}
}
- for (auto PassName : Passes) {
+ for (auto PassName : NonAAPasses) {
if (auto Err =
PB.parsePassPipeline(MPM, PassName, VerifyEachPass, DebugPM)) {
errs() << Arg0 << ": " << toString(std::move(Err)) << "\n";
Index: llvm/lib/Passes/PassBuilder.cpp
===================================================================
--- llvm/lib/Passes/PassBuilder.cpp
+++ llvm/lib/Passes/PassBuilder.cpp
@@ -2660,3 +2660,11 @@
return Error::success();
}
+
+bool PassBuilder::isAAPassName(StringRef PassName) {
+#define FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) \
+ if (PassName == NAME) \
+ return true;
+#include "PassRegistry.def"
+ return false;
+}
Index: llvm/include/llvm/Passes/PassBuilder.h
===================================================================
--- llvm/include/llvm/Passes/PassBuilder.h
+++ llvm/include/llvm/Passes/PassBuilder.h
@@ -515,6 +515,9 @@
/// returns false.
Error parseAAPipeline(AAManager &AA, StringRef PipelineText);
+ /// Returns true if the pass name is the name of an alias analysis pass.
+ bool isAAPassName(StringRef PassName);
+
/// Register a callback for a default optimizer pipeline extension
/// point
///
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82488.273164.patch
Type: text/x-patch
Size: 2389 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200624/626b6a2b/attachment.bin>
More information about the llvm-commits
mailing list