[flang-commits] [flang] [Flang] Fix options for FunctionAttr pass (PR #126819)
Scott Manley via flang-commits
flang-commits at lists.llvm.org
Tue Feb 11 14:53:13 PST 2025
https://github.com/rscottmanley created https://github.com/llvm/llvm-project/pull/126819
For non-basic types GenericOptionParser::findArgStrForValue will return null, ultimately an llvm_unreachable, when the specific values are not found. Add the enum, much like the debug-level option in AddDebugInfo to resolve this problem. Also change tuneCPU to be std::string or it will also fail.
>From c8376a93bb9853cbcedeb22d80a9b200060eaf85 Mon Sep 17 00:00:00 2001
From: Scott Manley <scmanley at nvidia.com>
Date: Tue, 11 Feb 2025 14:38:48 -0800
Subject: [PATCH] [Flang] Fix options for FunctionAttr pass
For non-basic types GenericOptionParser::findArgStrForValue will return
null when the specific values are not found. Add the enum, much like the
debug-level option in AddDebugInfo to resolve this problem. Also change
tuneCPU to be std::string or it will also have the same problem.
---
.../flang/Optimizer/Transforms/Passes.td | 49 ++++++++++---------
1 file changed, 26 insertions(+), 23 deletions(-)
diff --git a/flang/include/flang/Optimizer/Transforms/Passes.td b/flang/include/flang/Optimizer/Transforms/Passes.td
index 61f8b0835c958..0b6e0119c16c3 100644
--- a/flang/include/flang/Optimizer/Transforms/Passes.td
+++ b/flang/include/flang/Optimizer/Transforms/Passes.td
@@ -383,30 +383,33 @@ def FunctionAttr : Pass<"function-attr", "mlir::func::FuncOp"> {
freeing up an additional register in numerous functions. However, this
approach can make debugging unfeasible on certain machines.
}];
- let options = [
- Option<"framePointerKind", "frame-pointer",
- "mlir::LLVM::framePointerKind::FramePointerKind",
- /*default=*/"mlir::LLVM::framePointerKind::FramePointerKind{}",
- "frame pointer">,
- Option<"noInfsFPMath", "no-infs-fp-math",
- "bool", /*default=*/"false",
- "Set the no-infs-fp-math attribute on functions in the module.">,
- Option<"noNaNsFPMath", "no-nans-fp-math",
- "bool", /*default=*/"false",
- "Set the no-nans-fp-math attribute on functions in the module.">,
- Option<"approxFuncFPMath", "approx-func-fp-math",
- "bool", /*default=*/"false",
+ let options =
+ [Option<"framePointerKind", "frame-pointer",
+ "mlir::LLVM::framePointerKind::FramePointerKind",
+ /*default=*/"mlir::LLVM::framePointerKind::FramePointerKind{}",
+ "frame pointer", [{::llvm::cl::values(
+ clEnumValN(mlir::LLVM::framePointerKind::FramePointerKind::None, "None", ""),
+ clEnumValN(mlir::LLVM::framePointerKind::FramePointerKind::NonLeaf, "NonLeaf", ""),
+ clEnumValN(mlir::LLVM::framePointerKind::FramePointerKind::All, "All", ""),
+ clEnumValN(mlir::LLVM::framePointerKind::FramePointerKind::Reserved, "Reserved", "")
+ )}]>,
+ Option<"noInfsFPMath", "no-infs-fp-math", "bool", /*default=*/"false",
+ "Set the no-infs-fp-math attribute on functions in the module.">,
+ Option<"noNaNsFPMath", "no-nans-fp-math", "bool", /*default=*/"false",
+ "Set the no-nans-fp-math attribute on functions in the module.">,
+ Option<
+ "approxFuncFPMath", "approx-func-fp-math", "bool",
+ /*default=*/"false",
"Set the approx-func-fp-math attribute on functions in the module.">,
- Option<"noSignedZerosFPMath", "no-signed-zeros-fp-math",
- "bool", /*default=*/"false",
- "Set the no-signed-zeros-fp-math attribute on functions in the module.">,
- Option<"unsafeFPMath", "unsafe-fp-math",
- "bool", /*default=*/"false",
- "Set the unsafe-fp-math attribute on functions in the module.">,
- Option<"tuneCPU", "tune-cpu",
- "llvm::StringRef", /*default=*/"llvm::StringRef{}",
- "Set the tune-cpu attribute on functions in the module.">,
-];
+ Option<"noSignedZerosFPMath", "no-signed-zeros-fp-math", "bool",
+ /*default=*/"false",
+ "Set the no-signed-zeros-fp-math attribute on functions in the "
+ "module.">,
+ Option<"unsafeFPMath", "unsafe-fp-math", "bool", /*default=*/"false",
+ "Set the unsafe-fp-math attribute on functions in the module.">,
+ Option<"tuneCPU", "tune-cpu", "std::string", /*default=*/"",
+ "Set the tune-cpu attribute on functions in the module.">,
+ ];
}
def AssumedRankOpConversion : Pass<"fir-assumed-rank-op", "mlir::ModuleOp"> {
More information about the flang-commits
mailing list