[Mlir-commits] [mlir] ee4d034 - Change pass registration generated code to allow users to selectively register passes
Mehdi Amini
llvmlistbot at llvm.org
Thu Apr 2 11:59:08 PDT 2020
Author: Mehdi Amini
Date: 2020-04-02T18:58:47Z
New Revision: ee4d0342771a42b8485416bfdadc7da4ec4732dc
URL: https://github.com/llvm/llvm-project/commit/ee4d0342771a42b8485416bfdadc7da4ec4732dc
DIFF: https://github.com/llvm/llvm-project/commit/ee4d0342771a42b8485416bfdadc7da4ec4732dc.diff
LOG: Change pass registration generated code to allow users to selectively register passes
This slightly tweaks the generated code from:
#ifdef GEN_PASS_REGISTRATION
::mlir::registerPass("flag1", ...
::mlir::registerPass("flag2", ...
#endif // GEN_PASS_REGISTRATION
to:
#ifdef GEN_PASS_REGISTRATION
#define GEN_PASS_REGISTRATION_Pass1
#define GEN_PASS_REGISTRATION_Pass2
#endif // GEN_PASS_REGISTRATION
#ifdef GEN_PASS_REGISTRATION_Pass1
::mlir::registerPass("flag1", ...
#endif
#ifdef GEN_PASS_REGISTRATION_Pass1
::mlir::registerPass("flag2", ...
#endif
That way the generated code can be included by defining the
`GEN_PASS_REGISTRATION` macro as currenty and register all the passes,
but one can also define only `GEN_PASS_REGISTRATION_Pass1` to register a
subset of the passes.
Differential Revision: https://reviews.llvm.org/D77322
Added:
Modified:
mlir/tools/mlir-tblgen/PassGen.cpp
Removed:
################################################################################
diff --git a/mlir/tools/mlir-tblgen/PassGen.cpp b/mlir/tools/mlir-tblgen/PassGen.cpp
index 72ef5a653369..4cda353953ad 100644
--- a/mlir/tools/mlir-tblgen/PassGen.cpp
+++ b/mlir/tools/mlir-tblgen/PassGen.cpp
@@ -88,13 +88,31 @@ static void emitPassDecl(const Pass &pass, raw_ostream &os) {
static void emitRegistration(ArrayRef<Pass> passes, raw_ostream &os) {
os << "#ifdef GEN_PASS_REGISTRATION\n";
for (const Pass &pass : passes) {
+ os << llvm::formatv("#define GEN_PASS_REGISTRATION_{0}\n",
+ pass.getDef()->getName());
+ }
+ os << "#endif // GEN_PASS_REGISTRATION\n";
+
+ for (const Pass &pass : passes) {
+ os << llvm::formatv("#ifdef GEN_PASS_REGISTRATION_{0}\n",
+ pass.getDef()->getName());
os << llvm::formatv("::mlir::registerPass(\"{0}\", \"{1}\", []() -> "
"std::unique_ptr<Pass> {{ return {2}; });\n",
pass.getArgument(), pass.getSummary(),
pass.getConstructor());
+ os << llvm::formatv("#endif // GEN_PASS_REGISTRATION_{0}\n",
+ pass.getDef()->getName());
+ os << llvm::formatv("#undef GEN_PASS_REGISTRATION_{0}\n",
+ pass.getDef()->getName());
+ }
+
+ os << "#ifdef GEN_PASS_REGISTRATION\n";
+ for (const Pass &pass : passes) {
+ os << llvm::formatv("#undef GEN_PASS_REGISTRATION_{0}\n",
+ pass.getDef()->getName());
}
- os << "#undef GEN_PASS_REGISTRATION\n";
os << "#endif // GEN_PASS_REGISTRATION\n";
+ os << "#undef GEN_PASS_REGISTRATION\n";
}
//===----------------------------------------------------------------------===//
More information about the Mlir-commits
mailing list