Skip to content

Commit d8747ea

Browse files
[MLIR][LLVMIR] Translation: honor frame-pointer fn attribute (#130335)
1 parent cf1964a commit d8747ea

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

mlir/lib/Target/LLVMIR/ModuleTranslation.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1528,12 +1528,6 @@ LogicalResult ModuleTranslation::convertOneFunction(LLVMFuncOp func) {
15281528
if (auto fpContract = func.getFpContract())
15291529
llvmFunc->addFnAttr("fp-contract", *fpContract);
15301530

1531-
// Add function attribute frame-pointer, if found.
1532-
if (FramePointerKindAttr attr = func.getFramePointerAttr())
1533-
llvmFunc->addFnAttr("frame-pointer",
1534-
LLVM::framePointerKind::stringifyFramePointerKind(
1535-
(attr.getFramePointerKind())));
1536-
15371531
// First, create all blocks so we can jump to them.
15381532
llvm::LLVMContext &llvmContext = llvmFunc->getContext();
15391533
for (auto &bb : func) {
@@ -1606,6 +1600,9 @@ static void convertFunctionAttributes(LLVMFuncOp func,
16061600
llvmFunc->addFnAttr(llvm::Attribute::NoUnwind);
16071601
if (func.getWillReturnAttr())
16081602
llvmFunc->addFnAttr(llvm::Attribute::WillReturn);
1603+
if (FramePointerKindAttr fpAttr = func.getFramePointerAttr())
1604+
llvmFunc->addFnAttr("frame-pointer", stringifyFramePointerKind(
1605+
fpAttr.getFramePointerKind()));
16091606
convertFunctionMemoryAttributes(func, llvmFunc);
16101607
}
16111608

mlir/test/Target/LLVMIR/llvmir.mlir

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2454,6 +2454,18 @@ llvm.func @preserves_za_func() attributes {arm_preserves_za} {
24542454

24552455
// -----
24562456

2457+
//
2458+
// frame pointer attribute.
2459+
//
2460+
2461+
// CHECK-LABEL: @t
2462+
// CHECK-SAME: #[[FP:.*]]
2463+
llvm.func @t(!llvm.ptr) attributes {frame_pointer = #llvm.framePointerKind<"non-leaf">}
2464+
2465+
// CHECK: attributes #[[FP]] = { "frame-pointer"="non-leaf" }
2466+
2467+
// -----
2468+
24572469
//
24582470
// Zero-initialize operation.
24592471
//

0 commit comments

Comments
 (0)