[PATCH] D153784: [PassBuilder] Add textual representation for function simplification pipeline
Arthur Eubanks via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 26 09:55:38 PDT 2023
aeubanks created this revision.
aeubanks added reviewers: asbirlea, nikic.
Herald added subscribers: StephenFan, hiraditya.
Herald added a project: All.
aeubanks requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D153784
Files:
llvm/lib/Passes/PassBuilder.cpp
llvm/lib/Passes/PassRegistry.def
llvm/test/Other/function-simplification.ll
Index: llvm/test/Other/function-simplification.ll
===================================================================
--- /dev/null
+++ llvm/test/Other/function-simplification.ll
@@ -0,0 +1,18 @@
+; RUN: opt -passes='function-simplification<O1>' -debug-pass-manager -disable-output < %s 2>&1 | FileCheck %s --check-prefix=O1
+; RUN: opt -passes='function-simplification<O2>' -debug-pass-manager -disable-output < %s 2>&1 | FileCheck %s --check-prefix=O23SZ
+; RUN: opt -passes='function-simplification<O3>' -debug-pass-manager -disable-output < %s 2>&1 | FileCheck %s --check-prefix=O23SZ
+; RUN: opt -passes='function-simplification<Os>' -debug-pass-manager -disable-output < %s 2>&1 | FileCheck %s --check-prefix=O23SZ
+; RUN: opt -passes='function-simplification<Oz>' -debug-pass-manager -disable-output < %s 2>&1 | FileCheck %s --check-prefix=O23SZ
+; RUN: not opt -passes='function-simplification<O0>' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=O0
+
+; O1: Running pass: EarlyCSEPass
+; O1-NOT: Running pass: GVNPass
+
+; O23SZ: Running pass: EarlyCSEPass
+; O23SZ: Running pass: GVNPass
+
+; O0: invalid function-simplification parameter 'O0'
+
+define void @f() {
+ ret void
+}
\ No newline at end of file
Index: llvm/lib/Passes/PassRegistry.def
===================================================================
--- llvm/lib/Passes/PassRegistry.def
+++ llvm/lib/Passes/PassRegistry.def
@@ -543,6 +543,13 @@
},
parseSeparateConstOffsetFromGEPPassOptions,
"lower-gep")
+FUNCTION_PASS_WITH_PARAMS("function-simplification",
+ "",
+ [this](OptimizationLevel OL) {
+ return buildFunctionSimplificationPipeline(OL, ThinOrFullLTOPhase::None);
+ },
+ parseFunctionSimplificationPipelineOptions,
+ "O1;O2;O3;Os;Oz")
#undef FUNCTION_PASS_WITH_PARAMS
#ifndef LOOPNEST_PASS
Index: llvm/lib/Passes/PassBuilder.cpp
===================================================================
--- llvm/lib/Passes/PassBuilder.cpp
+++ llvm/lib/Passes/PassBuilder.cpp
@@ -1025,6 +1025,25 @@
"SeparateConstOffsetFromGEP");
}
+Expected<OptimizationLevel>
+parseFunctionSimplificationPipelineOptions(StringRef Params) {
+ std::optional<OptimizationLevel> L =
+ StringSwitch<std::optional<OptimizationLevel>>(Params)
+ .Case("O1", OptimizationLevel::O1)
+ .Case("O2", OptimizationLevel::O2)
+ .Case("O3", OptimizationLevel::O3)
+ .Case("Os", OptimizationLevel::Os)
+ .Case("Oz", OptimizationLevel::Oz)
+ .Default(std::nullopt);
+ if (!L) {
+ return make_error<StringError>(
+ formatv("invalid function-simplification parameter '{0}' ", Params)
+ .str(),
+ inconvertibleErrorCode());
+ };
+ return *L;
+}
+
} // namespace
/// Tests whether a pass name starts with a valid prefix for a default pipeline
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153784.534622.patch
Type: text/x-patch
Size: 3064 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230626/286364cd/attachment.bin>
More information about the llvm-commits
mailing list