https://github.com/DanielKristofKiss created https://github.com/llvm/llvm-project/pull/137800
This reverts commit 0b73b5af60f2c544892b9dd68b4fa43eeff52fc1. Corresponding change on main: #137795 CFI directives like `.cfi_negate_ra_state` must be emitted after the instruction. If the execution is stopped before the `paciasp` instruction is executed the debugger/unwinder would try to authenticated the return address as the `.cfi_negate_ra_state` already indicates it got signed. The problem of .cfi_negate_ra_state_with_pc to be solved later. >From 517e0a8088a0ae8ffa984d721ec043235b2aa98c Mon Sep 17 00:00:00 2001 From: Daniel Kiss <daniel.k...@arm.com> Date: Tue, 29 Apr 2025 14:35:15 +0200 Subject: [PATCH] Revert "[AArch64] Correct position of CFI Instruction for Pointer Authentication (#121559)" This reverts commit 0b73b5af60f2c544892b9dd68b4fa43eeff52fc1. --- .../lib/Target/AArch64/AArch64PointerAuth.cpp | 12 ++-- .../machine-outliner-retaddr-sign-cfi.ll | 2 +- ...tliner-retaddr-sign-diff-scope-same-key.ll | 12 ++-- .../machine-outliner-retaddr-sign-non-leaf.ll | 12 ++-- .../machine-outliner-retaddr-sign-regsave.mir | 2 +- ...tliner-retaddr-sign-same-scope-diff-key.ll | 12 ++-- .../machine-outliner-retaddr-sign-sp-mod.mir | 34 ++++----- ...machine-outliner-retaddr-sign-subtarget.ll | 6 +- .../machine-outliner-retaddr-sign-thunk.ll | 18 +++-- .../AArch64/pacbti-llvm-generated-funcs-2.ll | 4 +- ...sign-return-address-cfi-negate-ra-state.ll | 24 +++---- .../AArch64/sign-return-address-pauth-lr.ll | 70 +++++++++---------- .../CodeGen/AArch64/sign-return-address.ll | 44 ++++++------ .../MIR/AArch64/return-address-signing.mir | 6 +- 14 files changed, 128 insertions(+), 130 deletions(-) diff --git a/llvm/lib/Target/AArch64/AArch64PointerAuth.cpp b/llvm/lib/Target/AArch64/AArch64PointerAuth.cpp index c3bc70ad6f427..a290a5112d012 100644 --- a/llvm/lib/Target/AArch64/AArch64PointerAuth.cpp +++ b/llvm/lib/Target/AArch64/AArch64PointerAuth.cpp @@ -144,20 +144,20 @@ void AArch64PointerAuth::signLR(MachineFunction &MF, // No SEH opcode for this one; it doesn't materialize into an // instruction on Windows. if (MFnI.branchProtectionPAuthLR() && Subtarget->hasPAuthLR()) { - emitPACCFI(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameSetup, EmitCFI); BuildMI(MBB, MBBI, DL, TII->get(MFnI.shouldSignWithBKey() ? AArch64::PACIBSPPC : AArch64::PACIASPPC)) .setMIFlag(MachineInstr::FrameSetup) ->setPreInstrSymbol(MF, MFnI.getSigningInstrLabel()); + emitPACCFI(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameSetup, EmitCFI); } else { BuildPACM(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameSetup); - emitPACCFI(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameSetup, EmitCFI); BuildMI(MBB, MBBI, DL, TII->get(MFnI.shouldSignWithBKey() ? AArch64::PACIBSP : AArch64::PACIASP)) .setMIFlag(MachineInstr::FrameSetup) ->setPreInstrSymbol(MF, MFnI.getSigningInstrLabel()); + emitPACCFI(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameSetup, EmitCFI); } if (!EmitCFI && NeedsWinCFI) { @@ -212,19 +212,19 @@ void AArch64PointerAuth::authenticateLR( if (MFnI->branchProtectionPAuthLR() && Subtarget->hasPAuthLR()) { assert(PACSym && "No PAC instruction to refer to"); emitPACSymOffsetIntoX16(*TII, MBB, MBBI, DL, PACSym); - emitPACCFI(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameDestroy, - EmitAsyncCFI); BuildMI(MBB, MBBI, DL, TII->get(UseBKey ? AArch64::AUTIBSPPCi : AArch64::AUTIASPPCi)) .addSym(PACSym) .setMIFlag(MachineInstr::FrameDestroy); - } else { - BuildPACM(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameDestroy, PACSym); emitPACCFI(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameDestroy, EmitAsyncCFI); + } else { + BuildPACM(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameDestroy, PACSym); BuildMI(MBB, MBBI, DL, TII->get(UseBKey ? AArch64::AUTIBSP : AArch64::AUTIASP)) .setMIFlag(MachineInstr::FrameDestroy); + emitPACCFI(*Subtarget, MBB, MBBI, DL, MachineInstr::FrameDestroy, + EmitAsyncCFI); } if (NeedsWinCFI) { diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-cfi.ll b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-cfi.ll index e7de54036245a..4bbbe40176313 100644 --- a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-cfi.ll +++ b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-cfi.ll @@ -9,9 +9,9 @@ define void @a() "sign-return-address"="all" "sign-return-address-key"="b_key" { ; CHECK-LABEL: a: // @a ; CHECK: // %bb.0: ; CHECK-NEXT: .cfi_b_key_frame -; CHECK-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #27 ; V83A-NEXT: pacibsp +; CHECK-NEXT: .cfi_negate_ra_state %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i32, align 4 diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-diff-scope-same-key.ll b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-diff-scope-same-key.ll index a26dda1d5c1f1..6a11bef08c740 100644 --- a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-diff-scope-same-key.ll +++ b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-diff-scope-same-key.ll @@ -5,9 +5,9 @@ define void @a() "sign-return-address"="all" { ; CHECK-LABEL: a: // @a -; CHECK: .cfi_negate_ra_state -; V8A-NEXT: hint #25 -; V83A-NEXT: paciasp +; V8A: hint #25 +; V83A: paciasp +; CHECK-NEXT: .cfi_negate_ra_state %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i32, align 4 @@ -52,9 +52,9 @@ define void @b() "sign-return-address"="non-leaf" { define void @c() "sign-return-address"="all" { ; CHECK-LABEL: c: // @c -; CHECK: .cfi_negate_ra_state -; V8A-NEXT: hint #25 -; V83A-NEXT: paciasp +; V8A: hint #25 +; V83A: paciasp +; CHECK-NEXT .cfi_negate_ra_state %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i32, align 4 diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-non-leaf.ll b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-non-leaf.ll index 064b2b78c7bc7..1e7224683c6c8 100644 --- a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-non-leaf.ll +++ b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-non-leaf.ll @@ -8,8 +8,8 @@ define i64 @a(i64 %x) "sign-return-address"="non-leaf" "sign-return-address-key" ; V8A-LABEL: a: ; V8A: // %bb.0: ; V8A-NEXT: .cfi_b_key_frame -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #27 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: sub sp, sp, #32 ; V8A-NEXT: str x30, [sp, #16] // 8-byte Folded Spill ; V8A-NEXT: .cfi_def_cfa_offset 32 @@ -26,8 +26,8 @@ define i64 @a(i64 %x) "sign-return-address"="non-leaf" "sign-return-address-key" ; V83A-LABEL: a: ; V83A: // %bb.0: ; V83A-NEXT: .cfi_b_key_frame -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: pacibsp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: sub sp, sp, #32 ; V83A-NEXT: str x30, [sp, #16] // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 32 @@ -59,8 +59,8 @@ define i64 @b(i64 %x) "sign-return-address"="non-leaf" "sign-return-address-key" ; V8A-LABEL: b: ; V8A: // %bb.0: ; V8A-NEXT: .cfi_b_key_frame -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #27 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: sub sp, sp, #32 ; V8A-NEXT: str x30, [sp, #16] // 8-byte Folded Spill ; V8A-NEXT: .cfi_def_cfa_offset 32 @@ -77,8 +77,8 @@ define i64 @b(i64 %x) "sign-return-address"="non-leaf" "sign-return-address-key" ; V83A-LABEL: b: ; V83A: // %bb.0: ; V83A-NEXT: .cfi_b_key_frame -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: pacibsp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: sub sp, sp, #32 ; V83A-NEXT: str x30, [sp, #16] // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 32 @@ -110,8 +110,8 @@ define i64 @c(i64 %x) "sign-return-address"="non-leaf" "sign-return-address-key" ; V8A-LABEL: c: ; V8A: // %bb.0: ; V8A-NEXT: .cfi_b_key_frame -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #27 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: sub sp, sp, #32 ; V8A-NEXT: str x30, [sp, #16] // 8-byte Folded Spill ; V8A-NEXT: .cfi_def_cfa_offset 32 @@ -128,8 +128,8 @@ define i64 @c(i64 %x) "sign-return-address"="non-leaf" "sign-return-address-key" ; V83A-LABEL: c: ; V83A: // %bb.0: ; V83A-NEXT: .cfi_b_key_frame -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: pacibsp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: sub sp, sp, #32 ; V83A-NEXT: str x30, [sp, #16] // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 32 diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-regsave.mir b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-regsave.mir index 218ee6609c803..9a983cbd6714e 100644 --- a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-regsave.mir +++ b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-regsave.mir @@ -81,8 +81,8 @@ body: | # CHECK: name: bar # CHECK: bb.0: # CHECK: frame-setup EMITBKEY -# CHECK-NEXT: frame-setup CFI_INSTRUCTION negate_ra_sign_state # CHECK-NEXT: frame-setup PACIBSP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-setup CFI_INSTRUCTION negate_ra_sign_state # CHECK-NOT: OUTLINED_FUNCTION_ # CHECK: bb.1: # CHECK-NOT: OUTLINED_FUNCTION_ diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-same-scope-diff-key.ll b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-same-scope-diff-key.ll index 5c45373d8c1d6..87771f5de4f69 100644 --- a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-same-scope-diff-key.ll +++ b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-same-scope-diff-key.ll @@ -7,8 +7,8 @@ define void @a() "sign-return-address"="all" { ; V8A-LABEL: a: ; V8A: // %bb.0: -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #25 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: sub sp, sp, #32 ; V8A-NEXT: .cfi_def_cfa_offset 32 ; V8A-NEXT: mov w8, #1 // =0x1 @@ -26,8 +26,8 @@ define void @a() "sign-return-address"="all" { ; ; V83A-LABEL: a: ; V83A: // %bb.0: -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: sub sp, sp, #32 ; V83A-NEXT: .cfi_def_cfa_offset 32 ; V83A-NEXT: mov w8, #1 // =0x1 @@ -60,8 +60,8 @@ define void @b() "sign-return-address"="all" "sign-return-address-key"="b_key" { ; V8A-LABEL: b: ; V8A: // %bb.0: ; V8A-NEXT: .cfi_b_key_frame -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #27 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: sub sp, sp, #32 ; V8A-NEXT: .cfi_def_cfa_offset 32 ; V8A-NEXT: mov w8, #1 // =0x1 @@ -80,8 +80,8 @@ define void @b() "sign-return-address"="all" "sign-return-address-key"="b_key" { ; V83A-LABEL: b: ; V83A: // %bb.0: ; V83A-NEXT: .cfi_b_key_frame -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: pacibsp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: sub sp, sp, #32 ; V83A-NEXT: .cfi_def_cfa_offset 32 ; V83A-NEXT: mov w8, #1 // =0x1 @@ -113,8 +113,8 @@ define void @b() "sign-return-address"="all" "sign-return-address-key"="b_key" { define void @c() "sign-return-address"="all" { ; V8A-LABEL: c: ; V8A: // %bb.0: -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #25 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: sub sp, sp, #32 ; V8A-NEXT: .cfi_def_cfa_offset 32 ; V8A-NEXT: mov w8, #1 // =0x1 @@ -132,8 +132,8 @@ define void @c() "sign-return-address"="all" { ; ; V83A-LABEL: c: ; V83A: // %bb.0: -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: sub sp, sp, #32 ; V83A-NEXT: .cfi_def_cfa_offset 32 ; V83A-NEXT: mov w8, #1 // =0x1 diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-sp-mod.mir b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-sp-mod.mir index d4a4b886ec0e3..22e5edef2a939 100644 --- a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-sp-mod.mir +++ b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-sp-mod.mir @@ -86,11 +86,11 @@ body: | # CHECK: body: | # CHECK-NEXT: bb.0 (%ir-block.0): # CHECK-NEXT: liveins: $lr -# CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state -# CHECK-NEXT: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-setup CFI_INSTRUCTION negate_ra_sign_state # CHECK: BL @[[OUTLINED_FUNC:OUTLINED_FUNCTION_[0-9]+]] -# CHECK: frame-destroy CFI_INSTRUCTION negate_ra_sign_state -# CHECK-NEXT: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-destroy CFI_INSTRUCTION negate_ra_sign_state # CHECK-NEXT: RET undef $lr ... @@ -119,11 +119,11 @@ body: | # CHECK: body: | # CHECK-NEXT: bb.0 (%ir-block.0): # CHECK-NEXT: liveins: $lr -# CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state -# CHECK-NEXT: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-setup CFI_INSTRUCTION negate_ra_sign_state # CHECK: BL @[[OUTLINED_FUNC]] -# CHECK: frame-destroy CFI_INSTRUCTION negate_ra_sign_state -# CHECK-NEXT: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-destroy CFI_INSTRUCTION negate_ra_sign_state # CHECK-NEXT: RET undef $lr ... @@ -174,22 +174,22 @@ body: | # CHECK: body: | # CHECK-NEXT: bb.0 (%ir-block.0): # CHECK-NEXT: liveins: $lr -# CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state -# CHECK-NEXT: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-setup CFI_INSTRUCTION negate_ra_sign_state # CHECK-NOT: BL @OUTLINED_FUNCTION_{{.*}} -# CHECK: frame-destroy CFI_INSTRUCTION negate_ra_sign_state -# CHECK-NEXT: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-destroy CFI_INSTRUCTION negate_ra_sign_state # CHECK-NEXT: RET undef $lr # CHECK-LABEL: name: illegal1 # CHECK: body: | # CHECK-NEXT: bb.0 (%ir-block.0): # CHECK-NEXT: liveins: $lr -# CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state -# CHECK-NEXT: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-setup CFI_INSTRUCTION negate_ra_sign_state # CHECK-NOT: BL @OUTLINED_FUNCTION_{{.*}} -# CHECK: frame-destroy CFI_INSTRUCTION negate_ra_sign_state -# CHECK-NEXT: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-destroy CFI_INSTRUCTION negate_ra_sign_state # CHECK-NEXT: RET undef $lr # Outlined function that contains only legal sp modifications @@ -198,8 +198,8 @@ body: | # CHECK-NEXT: bb.0: # CHECK-NEXT: liveins: $lr # CHECK-NEXT: {{^ $}} -# CHECK-NEXT: frame-setup CFI_INSTRUCTION negate_ra_sign_state # CHECK-NEXT: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +# CHECK-NEXT: frame-setup CFI_INSTRUCTION negate_ra_sign_state # CHECK-NEXT: $sp = frame-setup SUBXri $sp, 16, 0 # CHECK: $sp = frame-destroy ADDXri $sp, 16, 0 # CHECK-NEXT: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-subtarget.ll b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-subtarget.ll index cb43b3ba3e47e..a7ea32952f3b7 100644 --- a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-subtarget.ll +++ b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-subtarget.ll @@ -9,8 +9,8 @@ define void @a() #0 { ; CHECK-LABEL: a: // @a ; CHECK: // %bb.0: ; CHECK-NEXT: .cfi_b_key_frame -; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: pacibsp +; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NOT: OUTLINED_FUNCTION_ %1 = alloca i32, align 4 %2 = alloca i32, align 4 @@ -33,8 +33,8 @@ define void @b() #0 { ; CHECK-LABEL: b: // @b ; CHECK: // %bb.0: ; CHECK-NEXT: .cfi_b_key_frame -; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: pacibsp +; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NOT: OUTLINED_FUNCTION_ %1 = alloca i32, align 4 %2 = alloca i32, align 4 @@ -57,8 +57,8 @@ define void @c() #1 { ; CHECK-LABEL: c: // @c ; CHECK: // %bb.0: ; CHECK-NEXT: .cfi_b_key_frame -; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: hint #27 +; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NOT: OUTLINED_FUNCTION_ %1 = alloca i32, align 4 %2 = alloca i32, align 4 diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-thunk.ll b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-thunk.ll index 0ba4455532925..da68ea5bf0dbc 100644 --- a/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-thunk.ll +++ b/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-thunk.ll @@ -10,8 +10,8 @@ declare i32 @thunk_called_fn(i32, i32, i32, i32) define i32 @a() #0 { ; V8A-LABEL: a: ; V8A: // %bb.0: // %entry -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #25 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V8A-NEXT: .cfi_def_cfa_offset 16 ; V8A-NEXT: .cfi_offset w30, -16 @@ -27,8 +27,8 @@ define i32 @a() #0 { ; ; V83A-LABEL: a: ; V83A: // %bb.0: // %entry -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -49,8 +49,8 @@ entry: define i32 @b() #0 { ; V8A-LABEL: b: ; V8A: // %bb.0: // %entry -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #25 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V8A-NEXT: .cfi_def_cfa_offset 16 ; V8A-NEXT: .cfi_offset w30, -16 @@ -66,8 +66,8 @@ define i32 @b() #0 { ; ; V83A-LABEL: b: ; V83A: // %bb.0: // %entry -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -88,8 +88,8 @@ entry: define hidden i32 @c(ptr %fptr) #0 { ; V8A-LABEL: c: ; V8A: // %bb.0: // %entry -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #25 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V8A-NEXT: .cfi_def_cfa_offset 16 ; V8A-NEXT: .cfi_offset w30, -16 @@ -106,8 +106,8 @@ define hidden i32 @c(ptr %fptr) #0 { ; ; V83A-LABEL: c: ; V83A: // %bb.0: // %entry -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -129,8 +129,8 @@ entry: define hidden i32 @d(ptr %fptr) #0 { ; V8A-LABEL: d: ; V8A: // %bb.0: // %entry -; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: hint #25 +; V8A-NEXT: .cfi_negate_ra_state ; V8A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V8A-NEXT: .cfi_def_cfa_offset 16 ; V8A-NEXT: .cfi_offset w30, -16 @@ -147,8 +147,8 @@ define hidden i32 @d(ptr %fptr) #0 { ; ; V83A-LABEL: d: ; V83A: // %bb.0: // %entry -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -176,5 +176,3 @@ attributes #0 = { "sign-return-address"="non-leaf" minsize } ; CHECK-NOT: .cfi_negate_ra_state ; CHECK-NOT: auti{{[a,b]}}sp ; CHECK-NOT: hint #{{[29,31]}} -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: -; CHECK: {{.*}} diff --git a/llvm/test/CodeGen/AArch64/pacbti-llvm-generated-funcs-2.ll b/llvm/test/CodeGen/AArch64/pacbti-llvm-generated-funcs-2.ll index f823d2aa82ac0..373c4969a9405 100644 --- a/llvm/test/CodeGen/AArch64/pacbti-llvm-generated-funcs-2.ll +++ b/llvm/test/CodeGen/AArch64/pacbti-llvm-generated-funcs-2.ll @@ -34,8 +34,8 @@ entry: } ;; CHECK-LABEL: __llvm_gcov_writeout: ;; CHECK: .cfi_b_key_frame -;; CHECK-NEXT: .cfi_negate_ra_state ;; CHECK-NEXT: pacibsp +;; CHECK-NEXT: .cfi_negate_ra_state define internal void @__llvm_gcov_reset() unnamed_addr #2 { entry: @@ -54,9 +54,9 @@ entry: } ;; CHECK-LABEL: __llvm_gcov_init: ;; CHECK: .cfi_b_key_frame +;; CHECK-NEXT: pacibsp ;; CHECK-NEXT: .cfi_negate_ra_state ;; CHECK-NOT: .cfi_ -;; CHECK-NEXT: pacibsp ;; CHECK: .cfi_endproc attributes #0 = { norecurse nounwind readnone "sign-return-address"="all" "sign-return-address-key"="b_key" } diff --git a/llvm/test/CodeGen/AArch64/sign-return-address-cfi-negate-ra-state.ll b/llvm/test/CodeGen/AArch64/sign-return-address-cfi-negate-ra-state.ll index 6ea072846d47c..4d4b7c215b978 100644 --- a/llvm/test/CodeGen/AArch64/sign-return-address-cfi-negate-ra-state.ll +++ b/llvm/test/CodeGen/AArch64/sign-return-address-cfi-negate-ra-state.ll @@ -9,8 +9,8 @@ define dso_local i32 @_Z3fooi(i32 %x) #0 { ; CHECK-V8A-LABEL: _Z3fooi: ; CHECK-V8A: // %bb.0: // %entry -; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: hint #25 +; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; CHECK-V8A-NEXT: .cfi_def_cfa_offset 16 ; CHECK-V8A-NEXT: .cfi_offset w30, -16 @@ -27,8 +27,8 @@ define dso_local i32 @_Z3fooi(i32 %x) #0 { ; ; CHECK-V83A-LABEL: _Z3fooi: ; CHECK-V83A: // %bb.0: // %entry -; CHECK-V83A-NEXT: .cfi_negate_ra_state ; CHECK-V83A-NEXT: paciasp +; CHECK-V83A-NEXT: .cfi_negate_ra_state ; CHECK-V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; CHECK-V83A-NEXT: .cfi_def_cfa_offset 16 ; CHECK-V83A-NEXT: .cfi_offset w30, -16 @@ -62,8 +62,8 @@ return: ; No predecessors! define hidden noundef i32 @baz_async(i32 noundef %a) #0 uwtable(async) { ; CHECK-V8A-LABEL: baz_async: ; CHECK-V8A: // %bb.0: // %entry -; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: hint #25 +; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; CHECK-V8A-NEXT: .cfi_def_cfa_offset 16 ; CHECK-V8A-NEXT: .cfi_offset w30, -16 @@ -74,8 +74,8 @@ define hidden noundef i32 @baz_async(i32 noundef %a) #0 uwtable(async) { ; CHECK-V8A-NEXT: bl _Z3bari ; CHECK-V8A-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; CHECK-V8A-NEXT: .cfi_def_cfa_offset 0 -; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: hint #29 +; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: .cfi_restore w30 ; CHECK-V8A-NEXT: b _Z3bari ; CHECK-V8A-NEXT: .LBB1_2: // %if.else @@ -84,15 +84,15 @@ define hidden noundef i32 @baz_async(i32 noundef %a) #0 uwtable(async) { ; CHECK-V8A-NEXT: add w0, w0, #1 ; CHECK-V8A-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; CHECK-V8A-NEXT: .cfi_def_cfa_offset 0 -; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: hint #29 +; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: .cfi_restore w30 ; CHECK-V8A-NEXT: ret ; ; CHECK-V83A-LABEL: baz_async: ; CHECK-V83A: // %bb.0: // %entry -; CHECK-V83A-NEXT: .cfi_negate_ra_state ; CHECK-V83A-NEXT: paciasp +; CHECK-V83A-NEXT: .cfi_negate_ra_state ; CHECK-V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; CHECK-V83A-NEXT: .cfi_def_cfa_offset 16 ; CHECK-V83A-NEXT: .cfi_offset w30, -16 @@ -103,8 +103,8 @@ define hidden noundef i32 @baz_async(i32 noundef %a) #0 uwtable(async) { ; CHECK-V83A-NEXT: bl _Z3bari ; CHECK-V83A-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; CHECK-V83A-NEXT: .cfi_def_cfa_offset 0 -; CHECK-V83A-NEXT: .cfi_negate_ra_state ; CHECK-V83A-NEXT: autiasp +; CHECK-V83A-NEXT: .cfi_negate_ra_state ; CHECK-V83A-NEXT: .cfi_restore w30 ; CHECK-V83A-NEXT: b _Z3bari ; CHECK-V83A-NEXT: .LBB1_2: // %if.else @@ -143,8 +143,8 @@ return: ; preds = %if.else, %if.then define hidden noundef i32 @baz_sync(i32 noundef %a) #0 uwtable(sync) { ; CHECK-V8A-LABEL: baz_sync: ; CHECK-V8A: // %bb.0: // %entry -; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: hint #25 +; CHECK-V8A-NEXT: .cfi_negate_ra_state ; CHECK-V8A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; CHECK-V8A-NEXT: .cfi_def_cfa_offset 16 ; CHECK-V8A-NEXT: .cfi_offset w30, -16 @@ -164,8 +164,8 @@ define hidden noundef i32 @baz_sync(i32 noundef %a) #0 uwtable(sync) { ; ; CHECK-V83A-LABEL: baz_sync: ; CHECK-V83A: // %bb.0: // %entry -; CHECK-V83A-NEXT: .cfi_negate_ra_state ; CHECK-V83A-NEXT: paciasp +; CHECK-V83A-NEXT: .cfi_negate_ra_state ; CHECK-V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; CHECK-V83A-NEXT: .cfi_def_cfa_offset 16 ; CHECK-V83A-NEXT: .cfi_offset w30, -16 @@ -216,7 +216,7 @@ attributes #0 = { "sign-return-address"="all" } ; CHECK-DUMP-NOT: DW_CFA_remember_state ; CHECK-DUMP-NOT: DW_CFA_restore_state -; CHECK-DUMP: CFA=WSP +; CHECK-DUMP: CFA=WSP{{$}} ; CHECK-DUMP: reg34=1 ; CHECK-DUMP-NOT: reg34=0 @@ -229,7 +229,6 @@ attributes #0 = { "sign-return-address"="all" } ; CHECK-DUMP: DW_CFA_restore_state: ; CHECK-DUMP: DW_CFA_AARCH64_negate_ra_state: -; CHECK-DUMP: CFA=WSP ;; First DW_CFA_AARCH64_negate_ra_state: ; CHECK-DUMP: reg34=1 ;; Second DW_CFA_AARCH64_negate_ra_state: @@ -238,6 +237,7 @@ attributes #0 = { "sign-return-address"="all" } ; CHECK-DUMP: reg34=1 ;; Third DW_CFA_AARCH64_negate_ra_state: ; CHECK-DUMP: reg34=0 +; CHECK-DUMP-NOT: reg34=1 ; baz_sync ; CHECK-DUMP-LABEL: FDE @@ -246,6 +246,6 @@ attributes #0 = { "sign-return-address"="all" } ; CHECK-DUMP-NOT: DW_CFA_remember_state ; CHECK-DUMP-NOT: DW_CFA_restore_state -; CHECK-DUMP: CFA=WSP +; CHECK-DUMP: CFA=WSP{{$}} ; CHECK-DUMP: reg34=1 ; CHECK-DUMP-NOT: reg34=0 diff --git a/llvm/test/CodeGen/AArch64/sign-return-address-pauth-lr.ll b/llvm/test/CodeGen/AArch64/sign-return-address-pauth-lr.ll index f37f12246e24a..fa689d2b9d7fd 100644 --- a/llvm/test/CodeGen/AArch64/sign-return-address-pauth-lr.ll +++ b/llvm/test/CodeGen/AArch64/sign-return-address-pauth-lr.ll @@ -60,9 +60,9 @@ define i32 @leaf_sign_all(i32 %x) "branch-protection-pauth-lr" "sign-return-addr ; COMPAT-LABEL: leaf_sign_all: ; COMPAT: // %bb.0: ; COMPAT-NEXT: hint #39 -; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: .Ltmp0: ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: adrp x16, .Ltmp0 ; COMPAT-NEXT: add x16, x16, :lo12:.Ltmp0 ; COMPAT-NEXT: hint #39 @@ -72,9 +72,9 @@ define i32 @leaf_sign_all(i32 %x) "branch-protection-pauth-lr" "sign-return-addr ; V83A-LABEL: leaf_sign_all: ; V83A: // %bb.0: ; V83A-NEXT: hint #39 -; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: .Ltmp0: ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: adrp x16, .Ltmp0 ; V83A-NEXT: add x16, x16, :lo12:.Ltmp0 ; V83A-NEXT: hint #39 @@ -82,9 +82,9 @@ define i32 @leaf_sign_all(i32 %x) "branch-protection-pauth-lr" "sign-return-addr ; ; PAUTHLR-LABEL: leaf_sign_all: ; PAUTHLR: // %bb.0: -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp0: ; PAUTHLR-NEXT: paciasppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: adrp x16, .Ltmp0 ; PAUTHLR-NEXT: add x16, x16, :lo12:.Ltmp0 ; PAUTHLR-NEXT: retaasppc .Ltmp0 @@ -95,9 +95,9 @@ define i64 @leaf_clobbers_lr(i64 %x) "branch-protection-pauth-lr" "sign-return-a ; COMPAT-LABEL: leaf_clobbers_lr: ; COMPAT: // %bb.0: ; COMPAT-NEXT: hint #39 -; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: .Ltmp1: ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; COMPAT-NEXT: .cfi_def_cfa_offset 16 ; COMPAT-NEXT: .cfi_offset w30, -16 @@ -114,9 +114,9 @@ define i64 @leaf_clobbers_lr(i64 %x) "branch-protection-pauth-lr" "sign-return-a ; V83A-LABEL: leaf_clobbers_lr: ; V83A: // %bb.0: ; V83A-NEXT: hint #39 -; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: .Ltmp1: ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -131,9 +131,9 @@ define i64 @leaf_clobbers_lr(i64 %x) "branch-protection-pauth-lr" "sign-return-a ; ; PAUTHLR-LABEL: leaf_clobbers_lr: ; PAUTHLR: // %bb.0: -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp1: ; PAUTHLR-NEXT: paciasppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; PAUTHLR-NEXT: .cfi_def_cfa_offset 16 ; PAUTHLR-NEXT: .cfi_offset w30, -16 @@ -154,9 +154,9 @@ define i32 @non_leaf_sign_all(i32 %x) "branch-protection-pauth-lr" "sign-return- ; COMPAT-LABEL: non_leaf_sign_all: ; COMPAT: // %bb.0: ; COMPAT-NEXT: hint #39 -; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: .Ltmp2: ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; COMPAT-NEXT: .cfi_def_cfa_offset 16 ; COMPAT-NEXT: .cfi_offset w30, -16 @@ -171,9 +171,9 @@ define i32 @non_leaf_sign_all(i32 %x) "branch-protection-pauth-lr" "sign-return- ; V83A-LABEL: non_leaf_sign_all: ; V83A: // %bb.0: ; V83A-NEXT: hint #39 -; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: .Ltmp2: ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -186,9 +186,9 @@ define i32 @non_leaf_sign_all(i32 %x) "branch-protection-pauth-lr" "sign-return- ; ; PAUTHLR-LABEL: non_leaf_sign_all: ; PAUTHLR: // %bb.0: -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp2: ; PAUTHLR-NEXT: paciasppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; PAUTHLR-NEXT: .cfi_def_cfa_offset 16 ; PAUTHLR-NEXT: .cfi_offset w30, -16 @@ -205,9 +205,9 @@ define i32 @non_leaf_sign_non_leaf(i32 %x) "branch-protection-pauth-lr" "sign-re ; COMPAT-LABEL: non_leaf_sign_non_leaf: ; COMPAT: // %bb.0: ; COMPAT-NEXT: hint #39 -; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: .Ltmp3: ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; COMPAT-NEXT: .cfi_def_cfa_offset 16 ; COMPAT-NEXT: .cfi_offset w30, -16 @@ -222,9 +222,9 @@ define i32 @non_leaf_sign_non_leaf(i32 %x) "branch-protection-pauth-lr" "sign-re ; V83A-LABEL: non_leaf_sign_non_leaf: ; V83A: // %bb.0: ; V83A-NEXT: hint #39 -; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: .Ltmp3: ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -237,9 +237,9 @@ define i32 @non_leaf_sign_non_leaf(i32 %x) "branch-protection-pauth-lr" "sign-re ; ; PAUTHLR-LABEL: non_leaf_sign_non_leaf: ; PAUTHLR: // %bb.0: -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp3: ; PAUTHLR-NEXT: paciasppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; PAUTHLR-NEXT: .cfi_def_cfa_offset 16 ; PAUTHLR-NEXT: .cfi_offset w30, -16 @@ -259,9 +259,9 @@ define i32 @non_leaf_scs(i32 %x) "branch-protection-pauth-lr" "sign-return-addre ; CHECK-NEXT: str x30, [x18], #8 ; CHECK-NEXT: .cfi_escape 0x16, 0x12, 0x02, 0x82, 0x78 // ; CHECK-NEXT: hint #39 -; CHECK-NEXT: .cfi_negate_ra_state_with_pc ; CHECK-NEXT: .Ltmp4: ; CHECK-NEXT: paciasp +; CHECK-NEXT: .cfi_negate_ra_state_with_pc ; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 16 ; CHECK-NEXT: .cfi_offset w30, -16 @@ -278,9 +278,9 @@ define i32 @non_leaf_scs(i32 %x) "branch-protection-pauth-lr" "sign-return-addre ; PAUTHLR: // %bb.0: ; PAUTHLR-NEXT: str x30, [x18], #8 ; PAUTHLR-NEXT: .cfi_escape 0x16, 0x12, 0x02, 0x82, 0x78 // -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp4: ; PAUTHLR-NEXT: paciasppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; PAUTHLR-NEXT: .cfi_def_cfa_offset 16 ; PAUTHLR-NEXT: .cfi_offset w30, -16 @@ -299,9 +299,9 @@ define i32 @leaf_sign_all_v83(i32 %x) "branch-protection-pauth-lr" "sign-return- ; CHECK-LABEL: leaf_sign_all_v83: ; CHECK: // %bb.0: ; CHECK-NEXT: hint #39 -; CHECK-NEXT: .cfi_negate_ra_state_with_pc ; CHECK-NEXT: .Ltmp5: ; CHECK-NEXT: paciasp +; CHECK-NEXT: .cfi_negate_ra_state_with_pc ; CHECK-NEXT: adrp x16, .Ltmp5 ; CHECK-NEXT: add x16, x16, :lo12:.Ltmp5 ; CHECK-NEXT: hint #39 @@ -309,9 +309,9 @@ define i32 @leaf_sign_all_v83(i32 %x) "branch-protection-pauth-lr" "sign-return- ; ; PAUTHLR-LABEL: leaf_sign_all_v83: ; PAUTHLR: // %bb.0: -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp5: ; PAUTHLR-NEXT: paciasppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: adrp x16, .Ltmp5 ; PAUTHLR-NEXT: add x16, x16, :lo12:.Ltmp5 ; PAUTHLR-NEXT: retaasppc .Ltmp5 @@ -324,9 +324,9 @@ define fastcc void @spill_lr_and_tail_call(i64 %x) "branch-protection-pauth-lr" ; COMPAT-LABEL: spill_lr_and_tail_call: ; COMPAT: // %bb.0: ; COMPAT-NEXT: hint #39 -; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: .Ltmp6: ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; COMPAT-NEXT: .cfi_def_cfa_offset 16 ; COMPAT-NEXT: .cfi_offset w30, -16 @@ -343,9 +343,9 @@ define fastcc void @spill_lr_and_tail_call(i64 %x) "branch-protection-pauth-lr" ; V83A-LABEL: spill_lr_and_tail_call: ; V83A: // %bb.0: ; V83A-NEXT: hint #39 -; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: .Ltmp6: ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -361,9 +361,9 @@ define fastcc void @spill_lr_and_tail_call(i64 %x) "branch-protection-pauth-lr" ; ; PAUTHLR-LABEL: spill_lr_and_tail_call: ; PAUTHLR: // %bb.0: -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp6: ; PAUTHLR-NEXT: paciasppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; PAUTHLR-NEXT: .cfi_def_cfa_offset 16 ; PAUTHLR-NEXT: .cfi_offset w30, -16 @@ -384,9 +384,9 @@ define i32 @leaf_sign_all_a_key(i32 %x) "branch-protection-pauth-lr" "sign-retur ; COMPAT-LABEL: leaf_sign_all_a_key: ; COMPAT: // %bb.0: ; COMPAT-NEXT: hint #39 -; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: .Ltmp7: ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: adrp x16, .Ltmp7 ; COMPAT-NEXT: add x16, x16, :lo12:.Ltmp7 ; COMPAT-NEXT: hint #39 @@ -396,9 +396,9 @@ define i32 @leaf_sign_all_a_key(i32 %x) "branch-protection-pauth-lr" "sign-retur ; V83A-LABEL: leaf_sign_all_a_key: ; V83A: // %bb.0: ; V83A-NEXT: hint #39 -; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: .Ltmp7: ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: adrp x16, .Ltmp7 ; V83A-NEXT: add x16, x16, :lo12:.Ltmp7 ; V83A-NEXT: hint #39 @@ -406,9 +406,9 @@ define i32 @leaf_sign_all_a_key(i32 %x) "branch-protection-pauth-lr" "sign-retur ; ; PAUTHLR-LABEL: leaf_sign_all_a_key: ; PAUTHLR: // %bb.0: -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp7: ; PAUTHLR-NEXT: paciasppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: adrp x16, .Ltmp7 ; PAUTHLR-NEXT: add x16, x16, :lo12:.Ltmp7 ; PAUTHLR-NEXT: retaasppc .Ltmp7 @@ -420,9 +420,9 @@ define i32 @leaf_sign_all_b_key(i32 %x) "branch-protection-pauth-lr" "sign-retur ; COMPAT: // %bb.0: ; COMPAT-NEXT: .cfi_b_key_frame ; COMPAT-NEXT: hint #39 -; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: .Ltmp8: ; COMPAT-NEXT: hint #27 +; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: adrp x16, .Ltmp8 ; COMPAT-NEXT: add x16, x16, :lo12:.Ltmp8 ; COMPAT-NEXT: hint #39 @@ -433,9 +433,9 @@ define i32 @leaf_sign_all_b_key(i32 %x) "branch-protection-pauth-lr" "sign-retur ; V83A: // %bb.0: ; V83A-NEXT: .cfi_b_key_frame ; V83A-NEXT: hint #39 -; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: .Ltmp8: ; V83A-NEXT: pacibsp +; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: adrp x16, .Ltmp8 ; V83A-NEXT: add x16, x16, :lo12:.Ltmp8 ; V83A-NEXT: hint #39 @@ -444,9 +444,9 @@ define i32 @leaf_sign_all_b_key(i32 %x) "branch-protection-pauth-lr" "sign-retur ; PAUTHLR-LABEL: leaf_sign_all_b_key: ; PAUTHLR: // %bb.0: ; PAUTHLR-NEXT: .cfi_b_key_frame -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp8: ; PAUTHLR-NEXT: pacibsppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: adrp x16, .Ltmp8 ; PAUTHLR-NEXT: add x16, x16, :lo12:.Ltmp8 ; PAUTHLR-NEXT: retabsppc .Ltmp8 @@ -458,9 +458,9 @@ define i32 @leaf_sign_all_v83_b_key(i32 %x) "branch-protection-pauth-lr" "sign-r ; CHECK: // %bb.0: ; CHECK-NEXT: .cfi_b_key_frame ; CHECK-NEXT: hint #39 -; CHECK-NEXT: .cfi_negate_ra_state_with_pc ; CHECK-NEXT: .Ltmp9: ; CHECK-NEXT: pacibsp +; CHECK-NEXT: .cfi_negate_ra_state_with_pc ; CHECK-NEXT: adrp x16, .Ltmp9 ; CHECK-NEXT: add x16, x16, :lo12:.Ltmp9 ; CHECK-NEXT: hint #39 @@ -469,9 +469,9 @@ define i32 @leaf_sign_all_v83_b_key(i32 %x) "branch-protection-pauth-lr" "sign-r ; PAUTHLR-LABEL: leaf_sign_all_v83_b_key: ; PAUTHLR: // %bb.0: ; PAUTHLR-NEXT: .cfi_b_key_frame -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp9: ; PAUTHLR-NEXT: pacibsppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: adrp x16, .Ltmp9 ; PAUTHLR-NEXT: add x16, x16, :lo12:.Ltmp9 ; PAUTHLR-NEXT: retabsppc .Ltmp9 @@ -484,9 +484,9 @@ define i32 @leaf_sign_all_a_key_bti(i32 %x) "branch-protection-pauth-lr" "sign-r ; COMPAT: // %bb.0: ; COMPAT-NEXT: hint #34 ; COMPAT-NEXT: hint #39 -; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: .Ltmp10: ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: adrp x16, .Ltmp10 ; COMPAT-NEXT: add x16, x16, :lo12:.Ltmp10 ; COMPAT-NEXT: hint #39 @@ -497,9 +497,9 @@ define i32 @leaf_sign_all_a_key_bti(i32 %x) "branch-protection-pauth-lr" "sign-r ; V83A: // %bb.0: ; V83A-NEXT: hint #34 ; V83A-NEXT: hint #39 -; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: .Ltmp10: ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: adrp x16, .Ltmp10 ; V83A-NEXT: add x16, x16, :lo12:.Ltmp10 ; V83A-NEXT: hint #39 @@ -508,9 +508,9 @@ define i32 @leaf_sign_all_a_key_bti(i32 %x) "branch-protection-pauth-lr" "sign-r ; PAUTHLR-LABEL: leaf_sign_all_a_key_bti: ; PAUTHLR: // %bb.0: ; PAUTHLR-NEXT: bti c -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp10: ; PAUTHLR-NEXT: paciasppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: adrp x16, .Ltmp10 ; PAUTHLR-NEXT: add x16, x16, :lo12:.Ltmp10 ; PAUTHLR-NEXT: retaasppc .Ltmp10 @@ -524,9 +524,9 @@ define i32 @leaf_sign_all_b_key_bti(i32 %x) "branch-protection-pauth-lr" "sign-r ; COMPAT-NEXT: hint #34 ; COMPAT-NEXT: .cfi_b_key_frame ; COMPAT-NEXT: hint #39 -; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: .Ltmp11: ; COMPAT-NEXT: hint #27 +; COMPAT-NEXT: .cfi_negate_ra_state_with_pc ; COMPAT-NEXT: adrp x16, .Ltmp11 ; COMPAT-NEXT: add x16, x16, :lo12:.Ltmp11 ; COMPAT-NEXT: hint #39 @@ -538,9 +538,9 @@ define i32 @leaf_sign_all_b_key_bti(i32 %x) "branch-protection-pauth-lr" "sign-r ; V83A-NEXT: hint #34 ; V83A-NEXT: .cfi_b_key_frame ; V83A-NEXT: hint #39 -; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: .Ltmp11: ; V83A-NEXT: pacibsp +; V83A-NEXT: .cfi_negate_ra_state_with_pc ; V83A-NEXT: adrp x16, .Ltmp11 ; V83A-NEXT: add x16, x16, :lo12:.Ltmp11 ; V83A-NEXT: hint #39 @@ -550,9 +550,9 @@ define i32 @leaf_sign_all_b_key_bti(i32 %x) "branch-protection-pauth-lr" "sign-r ; PAUTHLR: // %bb.0: ; PAUTHLR-NEXT: bti c ; PAUTHLR-NEXT: .cfi_b_key_frame -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp11: ; PAUTHLR-NEXT: pacibsppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: adrp x16, .Ltmp11 ; PAUTHLR-NEXT: add x16, x16, :lo12:.Ltmp11 ; PAUTHLR-NEXT: retabsppc .Ltmp11 @@ -566,9 +566,9 @@ define i32 @leaf_sign_all_v83_b_key_bti(i32 %x) "branch-protection-pauth-lr" "si ; CHECK-NEXT: hint #34 ; CHECK-NEXT: .cfi_b_key_frame ; CHECK-NEXT: hint #39 -; CHECK-NEXT: .cfi_negate_ra_state_with_pc ; CHECK-NEXT: .Ltmp12: ; CHECK-NEXT: pacibsp +; CHECK-NEXT: .cfi_negate_ra_state_with_pc ; CHECK-NEXT: adrp x16, .Ltmp12 ; CHECK-NEXT: add x16, x16, :lo12:.Ltmp12 ; CHECK-NEXT: hint #39 @@ -578,9 +578,9 @@ define i32 @leaf_sign_all_v83_b_key_bti(i32 %x) "branch-protection-pauth-lr" "si ; PAUTHLR: // %bb.0: ; PAUTHLR-NEXT: bti c ; PAUTHLR-NEXT: .cfi_b_key_frame -; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: .Ltmp12: ; PAUTHLR-NEXT: pacibsppc +; PAUTHLR-NEXT: .cfi_negate_ra_state_with_pc ; PAUTHLR-NEXT: adrp x16, .Ltmp12 ; PAUTHLR-NEXT: add x16, x16, :lo12:.Ltmp12 ; PAUTHLR-NEXT: retabsppc .Ltmp12 diff --git a/llvm/test/CodeGen/AArch64/sign-return-address.ll b/llvm/test/CodeGen/AArch64/sign-return-address.ll index e0ee0d84ab4f1..dafe0d71ceb5f 100644 --- a/llvm/test/CodeGen/AArch64/sign-return-address.ll +++ b/llvm/test/CodeGen/AArch64/sign-return-address.ll @@ -29,15 +29,15 @@ define i32 @leaf_sign_non_leaf(i32 %x) "sign-return-address"="non-leaf" { define i32 @leaf_sign_all(i32 %x) "sign-return-address"="all" { ; COMPAT-LABEL: leaf_sign_all: ; COMPAT: // %bb.0: -; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #29 ; COMPAT-NEXT: ret ; ; V83A-LABEL: leaf_sign_all: ; V83A: // %bb.0: -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: retaa ret i32 %x } @@ -45,8 +45,8 @@ define i32 @leaf_sign_all(i32 %x) "sign-return-address"="all" { define i64 @leaf_clobbers_lr(i64 %x) "sign-return-address"="non-leaf" { ; COMPAT-LABEL: leaf_clobbers_lr: ; COMPAT: // %bb.0: -; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; COMPAT-NEXT: .cfi_def_cfa_offset 16 ; COMPAT-NEXT: .cfi_offset w30, -16 @@ -59,8 +59,8 @@ define i64 @leaf_clobbers_lr(i64 %x) "sign-return-address"="non-leaf" { ; ; V83A-LABEL: leaf_clobbers_lr: ; V83A: // %bb.0: -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -78,8 +78,8 @@ declare i32 @foo(i32) define i32 @non_leaf_sign_all(i32 %x) "sign-return-address"="all" { ; COMPAT-LABEL: non_leaf_sign_all: ; COMPAT: // %bb.0: -; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; COMPAT-NEXT: .cfi_def_cfa_offset 16 ; COMPAT-NEXT: .cfi_offset w30, -16 @@ -90,8 +90,8 @@ define i32 @non_leaf_sign_all(i32 %x) "sign-return-address"="all" { ; ; V83A-LABEL: non_leaf_sign_all: ; V83A: // %bb.0: -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -105,8 +105,8 @@ define i32 @non_leaf_sign_all(i32 %x) "sign-return-address"="all" { define i32 @non_leaf_sign_non_leaf(i32 %x) "sign-return-address"="non-leaf" { ; COMPAT-LABEL: non_leaf_sign_non_leaf: ; COMPAT: // %bb.0: -; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; COMPAT-NEXT: .cfi_def_cfa_offset 16 ; COMPAT-NEXT: .cfi_offset w30, -16 @@ -117,8 +117,8 @@ define i32 @non_leaf_sign_non_leaf(i32 %x) "sign-return-address"="non-leaf" { ; ; V83A-LABEL: non_leaf_sign_non_leaf: ; V83A: // %bb.0: -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -135,8 +135,8 @@ define i32 @non_leaf_scs(i32 %x) "sign-return-address"="non-leaf" shadowcallstac ; CHECK: // %bb.0: ; CHECK-NEXT: str x30, [x18], #8 ; CHECK-NEXT: .cfi_escape 0x16, 0x12, 0x02, 0x82, 0x78 // -; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: paciasp +; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 16 ; CHECK-NEXT: .cfi_offset w30, -16 @@ -152,8 +152,8 @@ define i32 @non_leaf_scs(i32 %x) "sign-return-address"="non-leaf" shadowcallstac define i32 @leaf_sign_all_v83(i32 %x) "sign-return-address"="all" "target-features"="+v8.3a" { ; CHECK-LABEL: leaf_sign_all_v83: ; CHECK: // %bb.0: -; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: paciasp +; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: retaa ret i32 %x } @@ -163,8 +163,8 @@ declare fastcc i64 @bar(i64) define fastcc void @spill_lr_and_tail_call(i64 %x) "sign-return-address"="all" { ; COMPAT-LABEL: spill_lr_and_tail_call: ; COMPAT: // %bb.0: -; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; COMPAT-NEXT: .cfi_def_cfa_offset 16 ; COMPAT-NEXT: .cfi_offset w30, -16 @@ -177,8 +177,8 @@ define fastcc void @spill_lr_and_tail_call(i64 %x) "sign-return-address"="all" { ; ; V83A-LABEL: spill_lr_and_tail_call: ; V83A: // %bb.0: -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill ; V83A-NEXT: .cfi_def_cfa_offset 16 ; V83A-NEXT: .cfi_offset w30, -16 @@ -196,15 +196,15 @@ define fastcc void @spill_lr_and_tail_call(i64 %x) "sign-return-address"="all" { define i32 @leaf_sign_all_a_key(i32 %x) "sign-return-address"="all" "sign-return-address-key"="a_key" { ; COMPAT-LABEL: leaf_sign_all_a_key: ; COMPAT: // %bb.0: -; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #29 ; COMPAT-NEXT: ret ; ; V83A-LABEL: leaf_sign_all_a_key: ; V83A: // %bb.0: -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: retaa ret i32 %x } @@ -213,16 +213,16 @@ define i32 @leaf_sign_all_b_key(i32 %x) "sign-return-address"="all" "sign-return ; COMPAT-LABEL: leaf_sign_all_b_key: ; COMPAT: // %bb.0: ; COMPAT-NEXT: .cfi_b_key_frame -; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #27 +; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #31 ; COMPAT-NEXT: ret ; ; V83A-LABEL: leaf_sign_all_b_key: ; V83A: // %bb.0: ; V83A-NEXT: .cfi_b_key_frame -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: pacibsp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: retab ret i32 %x } @@ -231,8 +231,8 @@ define i32 @leaf_sign_all_v83_b_key(i32 %x) "sign-return-address"="all" "target- ; CHECK-LABEL: leaf_sign_all_v83_b_key: ; CHECK: // %bb.0: ; CHECK-NEXT: .cfi_b_key_frame -; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: pacibsp +; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: retab ret i32 %x } @@ -241,15 +241,15 @@ define i32 @leaf_sign_all_v83_b_key(i32 %x) "sign-return-address"="all" "target- define i32 @leaf_sign_all_a_key_bti(i32 %x) "sign-return-address"="all" "sign-return-address-key"="a_key" "branch-target-enforcement"{ ; COMPAT-LABEL: leaf_sign_all_a_key_bti: ; COMPAT: // %bb.0: -; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #25 +; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #29 ; COMPAT-NEXT: ret ; ; V83A-LABEL: leaf_sign_all_a_key_bti: ; V83A: // %bb.0: -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: paciasp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: retaa ret i32 %x } @@ -259,16 +259,16 @@ define i32 @leaf_sign_all_b_key_bti(i32 %x) "sign-return-address"="all" "sign-re ; COMPAT-LABEL: leaf_sign_all_b_key_bti: ; COMPAT: // %bb.0: ; COMPAT-NEXT: .cfi_b_key_frame -; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #27 +; COMPAT-NEXT: .cfi_negate_ra_state ; COMPAT-NEXT: hint #31 ; COMPAT-NEXT: ret ; ; V83A-LABEL: leaf_sign_all_b_key_bti: ; V83A: // %bb.0: ; V83A-NEXT: .cfi_b_key_frame -; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: pacibsp +; V83A-NEXT: .cfi_negate_ra_state ; V83A-NEXT: retab ret i32 %x } @@ -278,8 +278,8 @@ define i32 @leaf_sign_all_v83_b_key_bti(i32 %x) "sign-return-address"="all" "tar ; CHECK-LABEL: leaf_sign_all_v83_b_key_bti: ; CHECK: // %bb.0: ; CHECK-NEXT: .cfi_b_key_frame -; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: pacibsp +; CHECK-NEXT: .cfi_negate_ra_state ; CHECK-NEXT: retab ret i32 %x } diff --git a/llvm/test/CodeGen/MIR/AArch64/return-address-signing.mir b/llvm/test/CodeGen/MIR/AArch64/return-address-signing.mir index b2abff75880c9..d2b063a057139 100644 --- a/llvm/test/CodeGen/MIR/AArch64/return-address-signing.mir +++ b/llvm/test/CodeGen/MIR/AArch64/return-address-signing.mir @@ -25,8 +25,8 @@ alignment: 4 tracksRegLiveness: true frameInfo: maxCallFrameSize: 0 -#CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state #CHECK: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp +#CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state #CHECK: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp body: | bb.0.entry: @@ -42,8 +42,8 @@ tracksRegLiveness: true frameInfo: maxCallFrameSize: 0 #CHECK: frame-setup EMITBKEY -#CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state #CHECK: frame-setup PACIBSP implicit-def $lr, implicit $lr, implicit $sp +#CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state #CHECK: frame-destroy AUTIBSP implicit-def $lr, implicit $lr, implicit $sp body: | bb.0.entry: @@ -59,8 +59,8 @@ tracksRegLiveness: true frameInfo: maxCallFrameSize: 0 #CHECK: frame-setup PACM -#CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state_with_pc #CHECK: frame-setup PACIASP implicit-def $lr, implicit $lr, implicit $sp, pre-instr-symbol <mcsymbol > +#CHECK: frame-setup CFI_INSTRUCTION negate_ra_sign_state_with_pc #CHECK: frame-destroy PACM #CHECK: frame-destroy AUTIASP implicit-def $lr, implicit $lr, implicit $sp body: | _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits