aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Passes/PassBuilder.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2025-04-01 23:27:20 +0700
committerGitHub <noreply@github.com>2025-04-01 23:27:20 +0700
commit7e25b240731413d2cfca2b78ab1d0ed33d851622 (patch)
tree23ab29418523ec254b6ead8dc5fa462b559b15cd /llvm/lib/Passes/PassBuilder.cpp
parent105c8c38dcb7fd6077c92c5e0f838c9b7ad9971e (diff)
downloadllvm-7e25b240731413d2cfca2b78ab1d0ed33d851622.zip
llvm-7e25b240731413d2cfca2b78ab1d0ed33d851622.tar.gz
llvm-7e25b240731413d2cfca2b78ab1d0ed33d851622.tar.bz2
IRNormalizer: Replace cl::opts with pass parameters (#133874)
Not sure why the "fold-all" option naming didn't match the variable "FoldPreOutputs", but I've preserved the difference. More annoyingly, the pass name "normalize" does not match the pass name IRNormalizer and should probably be fixed one way or the other. Also the existing test coverage for the flags is lacking. I've added a test that shows they parse, but we should have tests that they do something.
Diffstat (limited to 'llvm/lib/Passes/PassBuilder.cpp')
-rw-r--r--llvm/lib/Passes/PassBuilder.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index 536a7fc..5cda151 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -793,6 +793,31 @@ Expected<bool> parseLowerMatrixIntrinsicsPassOptions(StringRef Params) {
"LowerMatrixIntrinsics");
}
+Expected<IRNormalizerOptions> parseIRNormalizerPassOptions(StringRef Params) {
+ IRNormalizerOptions Result;
+ while (!Params.empty()) {
+ StringRef ParamName;
+ std::tie(ParamName, Params) = Params.split(';');
+
+ bool Enable = !ParamName.consume_front("no-");
+ if (ParamName == "preserve-order")
+ Result.PreserveOrder = Enable;
+ else if (ParamName == "rename-all")
+ Result.RenameAll = Enable;
+ else if (ParamName == "fold-all") // FIXME: Name mismatch
+ Result.FoldPreOutputs = Enable;
+ else if (ParamName == "reorder-operands")
+ Result.ReorderOperands = Enable;
+ else {
+ return make_error<StringError>(
+ formatv("invalid normalize pass parameter '{0}' ", ParamName).str(),
+ inconvertibleErrorCode());
+ }
+ }
+
+ return Result;
+}
+
Expected<AddressSanitizerOptions> parseASanPassOptions(StringRef Params) {
AddressSanitizerOptions Result;
while (!Params.empty()) {