Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2914,10 +2914,11 @@ bool AArch64InstructionSelector::select(MachineInstr &I) {
}

if (OpFlags & AArch64II::MO_GOT) {
I.setDesc(TII.get(MF.getInfo<AArch64FunctionInfo>()->hasELFSignedGOT()
? AArch64::LOADgotAUTH
: AArch64::LOADgot));
bool IsGOTSigned = MF.getInfo<AArch64FunctionInfo>()->hasELFSignedGOT();
I.setDesc(TII.get(IsGOTSigned ? AArch64::LOADgotAUTH : AArch64::LOADgot));
I.getOperand(1).setTargetFlags(OpFlags);
if (IsGOTSigned)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just do it unconditionally

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in 4ef4947.

I.addImplicitDefUseOperands(MF);
} else if (TM.getCodeModel() == CodeModel::Large &&
!TM.isPositionIndependent()) {
// Materialize the global using movz/movk instructions.
Expand Down
23 changes: 23 additions & 0 deletions llvm/test/CodeGen/AArch64/GlobalISel/ptrauth-elf-got.mir
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4
# RUN: llc -O0 -mtriple=aarch64-linux-gnu -relocation-model=pic -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s

--- |
@var_got = external global i8
define ptr @loadgotauth_implicit_defs() { ret ptr null }

!llvm.module.flags = !{!0}
!0 = !{i32 8, !"ptrauth-elf-got", i32 1}
...

---
name: loadgotauth_implicit_defs
legalized: true
regBankSelected: true
body: |
bb.0:
; CHECK-LABEL: name: loadgotauth_implicit_defs
; CHECK: [[LOADgotAUTH:%[0-9]+]]:gpr64common = LOADgotAUTH target-flags(aarch64-got) @var_got, implicit-def $x16, implicit-def $x17, implicit-def $nzcv
; CHECK-NEXT: $x0 = COPY [[LOADgotAUTH]]
%0:gpr(p0) = G_GLOBAL_VALUE @var_got
$x0 = COPY %0(p0)
...