[Mlir-commits] [mlir] d8747ea - [MLIR][LLVMIR] Translation: honor frame-pointer fn attribute (#130335)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Mar 7 18:34:13 PST 2025
Author: Bruno Cardoso Lopes
Date: 2025-03-07T18:34:10-08:00
New Revision: d8747eac36fb4f965de3cef252227be775a59959
URL: https://github.com/llvm/llvm-project/commit/d8747eac36fb4f965de3cef252227be775a59959
DIFF: https://github.com/llvm/llvm-project/commit/d8747eac36fb4f965de3cef252227be775a59959.diff
LOG: [MLIR][LLVMIR] Translation: honor frame-pointer fn attribute (#130335)
Added:
Modified:
mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
mlir/test/Target/LLVMIR/llvmir.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
index b1bc26a545f62..1f0b9556f6b20 100644
--- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
@@ -1528,12 +1528,6 @@ LogicalResult ModuleTranslation::convertOneFunction(LLVMFuncOp func) {
if (auto fpContract = func.getFpContract())
llvmFunc->addFnAttr("fp-contract", *fpContract);
- // Add function attribute frame-pointer, if found.
- if (FramePointerKindAttr attr = func.getFramePointerAttr())
- llvmFunc->addFnAttr("frame-pointer",
- LLVM::framePointerKind::stringifyFramePointerKind(
- (attr.getFramePointerKind())));
-
// First, create all blocks so we can jump to them.
llvm::LLVMContext &llvmContext = llvmFunc->getContext();
for (auto &bb : func) {
@@ -1606,6 +1600,9 @@ static void convertFunctionAttributes(LLVMFuncOp func,
llvmFunc->addFnAttr(llvm::Attribute::NoUnwind);
if (func.getWillReturnAttr())
llvmFunc->addFnAttr(llvm::Attribute::WillReturn);
+ if (FramePointerKindAttr fpAttr = func.getFramePointerAttr())
+ llvmFunc->addFnAttr("frame-pointer", stringifyFramePointerKind(
+ fpAttr.getFramePointerKind()));
convertFunctionMemoryAttributes(func, llvmFunc);
}
diff --git a/mlir/test/Target/LLVMIR/llvmir.mlir b/mlir/test/Target/LLVMIR/llvmir.mlir
index db2e08742dbca..c618b1309da45 100644
--- a/mlir/test/Target/LLVMIR/llvmir.mlir
+++ b/mlir/test/Target/LLVMIR/llvmir.mlir
@@ -2454,6 +2454,18 @@ llvm.func @preserves_za_func() attributes {arm_preserves_za} {
// -----
+//
+// frame pointer attribute.
+//
+
+// CHECK-LABEL: @t
+// CHECK-SAME: #[[FP:.*]]
+llvm.func @t(!llvm.ptr) attributes {frame_pointer = #llvm.framePointerKind<"non-leaf">}
+
+// CHECK: attributes #[[FP]] = { "frame-pointer"="non-leaf" }
+
+// -----
+
//
// Zero-initialize operation.
//
More information about the Mlir-commits
mailing list