Skip to content

Commit 60db321

Browse files
authored
[AArch64] Do not mark homogeneous prolog/epilog functions optnone (#117959)
The verifier complains that synthesized IR functions have minsize and optnone attributes which are incompatible. This patch removes optnone attribute and updates affected tests as needed.
1 parent 3ffee00 commit 60db321

File tree

3 files changed

+5
-7
lines changed

3 files changed

+5
-7
lines changed

llvm/lib/Target/AArch64/AArch64LowerHomogeneousPrologEpilog.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,7 @@ static MachineFunction &createFrameHelperMachineFunction(Module *M,
169169
F->setLinkage(GlobalValue::LinkOnceODRLinkage);
170170
F->setUnnamedAddr(GlobalValue::UnnamedAddr::Global);
171171

172-
// Set no-opt/minsize, so we don't insert padding between outlined
173-
// functions.
174-
F->addFnAttr(Attribute::OptimizeNone);
172+
// Set minsize, so we don't insert padding between outlined functions.
175173
F->addFnAttr(Attribute::NoInline);
176174
F->addFnAttr(Attribute::MinSize);
177175
F->addFnAttr(Attribute::Naked);

llvm/test/CodeGen/AArch64/arm64-homogeneous-prolog-epilog-frame-tail.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ declare i32 @_Z3hoov() nounwind ssp optsize
5151
; CHECK-LABEL: _OUTLINED_FUNCTION_PROLOG_FRAME48_x30x29x19x20d8d9d10d11:
5252
; CHECK: stp d11, d10, [sp, #-48]!
5353
; CHECK-NEXT: stp d9, d8, [sp, #16]
54-
; CHECK-NEXT: stp x20, x19, [sp, #32]
5554
; CHECK-NEXT: add x29, sp, #48
55+
; CHECK-NEXT: stp x20, x19, [sp, #32]
5656
; CHECK-NEXT: ret
5757

5858
; CHECK-LABEL: _OUTLINED_FUNCTION_EPILOG_TAIL_x30x29x19x20d8d9d10d11:
@@ -69,8 +69,8 @@ declare i32 @_Z3hoov() nounwind ssp optsize
6969
; CHECK-LINUX-LABEL: OUTLINED_FUNCTION_PROLOG_FRAME32_x19x20x30x29d8d9d10d11:
7070
; CHECK-LINUX: stp d11, d10, [sp, #-32]!
7171
; CHECK-LINUX-NEXT: stp d9, d8, [sp, #16]
72-
; CHECK-LINUX-NEXT: stp x20, x19, [sp, #48]
7372
; CHECK-LINUX-NEXT: add x29, sp, #32
73+
; CHECK-LINUX-NEXT: stp x20, x19, [sp, #48]
7474
; CHECK-LINUX-NEXT: ret
7575

7676
; CHECK-LINUX-LABEL: OUTLINED_FUNCTION_EPILOG_TAIL_x19x20x30x29d8d9d10d11:

llvm/test/CodeGen/AArch64/arm64-homogeneous-prolog-epilog.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)
6767
; CHECK-LINUX-NEXT: ret
6868

6969
; CHECK-LINUX-LABEL: OUTLINED_FUNCTION_EPILOG_x19x20x21x22x30x29:
70-
; CHECK-LINUX: mov x16, x30
71-
; CHECK-LINUX-NEXT: ldp x20, x19, [sp, #32]
70+
; CHECK-LINUX: ldp x20, x19, [sp, #32]
71+
; CHECK-LINUX-NEXT: mov x16, x30
7272
; CHECK-LINUX-NEXT: ldp x22, x21, [sp, #16]
7373
; CHECK-LINUX-NEXT: ldp x29, x30, [sp], #48
7474
; CHECK-LINUX-NEXT: ret x16

0 commit comments

Comments
 (0)