forked from OSchip/llvm-project
[ARM] Emit correct build attributes for the relocation models.
Patch by Asiri Rathnayake. llvm-svn: 209656
This commit is contained in:
parent
10e06da031
commit
ceeb1c4830
|
@ -146,6 +146,19 @@ enum {
|
|||
AllowNeon2 = 2, // SIMDv2 was permitted (Half-precision FP, MAC operations)
|
||||
AllowNeonARMv8 = 3, // ARM v8-A SIMD was permitted
|
||||
|
||||
// Tag_ABI_PCS_RW_data, (=15), uleb128
|
||||
AddressRWPCRel = 1, // Address RW static data PC-relative
|
||||
AddressRWSBRel = 2, // Address RW static data SB-relative
|
||||
AddressRWNone = 3, // No RW static data permitted
|
||||
|
||||
// Tag_ABI_PCS_RO_data, (=14), uleb128
|
||||
AddressROPCRel = 1, // Address RO static data PC-relative
|
||||
AddressRONone = 2, // No RO static data permitted
|
||||
|
||||
// Tag_ABI_PCS_GOT_use, (=17), uleb128
|
||||
AddressDirect = 1, // Address imported data directly
|
||||
AddressGOT = 2, // Address imported data indirectly (via GOT)
|
||||
|
||||
// Tag_ABI_FP_denormal, (=20), uleb128
|
||||
PreserveFPSign = 2, // sign when flushed-to-zero is preserved
|
||||
|
||||
|
|
|
@ -671,6 +671,20 @@ void ARMAsmPrinter::emitAttributes() {
|
|||
ATS.emitFPU(ARM::VFPV2);
|
||||
}
|
||||
|
||||
if (TM.getRelocationModel() == Reloc::PIC_) {
|
||||
// PIC specific attributes.
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_PCS_RW_data,
|
||||
ARMBuildAttrs::AddressRWPCRel);
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_PCS_RO_data,
|
||||
ARMBuildAttrs::AddressROPCRel);
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_PCS_GOT_use,
|
||||
ARMBuildAttrs::AddressGOT);
|
||||
} else {
|
||||
// Allow direct addressing of imported data for all other relocation models.
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_PCS_GOT_use,
|
||||
ARMBuildAttrs::AddressDirect);
|
||||
}
|
||||
|
||||
// Signal various FP modes.
|
||||
if (!TM.Options.UnsafeFPMath) {
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_denormal, ARMBuildAttrs::Allowed);
|
||||
|
|
|
@ -33,6 +33,11 @@
|
|||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2,-vfp3,-vfp4,-neon | FileCheck %s --check-prefix=CORTEX-A7-NOFPU
|
||||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
|
||||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,,+d16,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
|
||||
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=pic | FileCheck %s --check-prefix=RELOC-PIC
|
||||
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=static | FileCheck %s --check-prefix=RELOC-OTHER
|
||||
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=default | FileCheck %s --check-prefix=RELOC-OTHER
|
||||
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=dynamic-no-pic | FileCheck %s --check-prefix=RELOC-OTHER
|
||||
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi | FileCheck %s --check-prefix=RELOC-OTHER
|
||||
|
||||
; XSCALE: .eabi_attribute 6, 5
|
||||
; XSCALE: .eabi_attribute 8, 1
|
||||
|
@ -453,6 +458,11 @@
|
|||
; CORTEX-A57-NOT: .eabi_attribute 44
|
||||
; CORTEX-A57: .eabi_attribute 68, 3
|
||||
|
||||
; RELOC-PIC: .eabi_attribute 15, 1
|
||||
; RELOC-PIC: .eabi_attribute 16, 1
|
||||
; RELOC-PIC: .eabi_attribute 17, 2
|
||||
; RELOC-OTHER: .eabi_attribute 17, 1
|
||||
|
||||
define i32 @f(i64 %z) {
|
||||
ret i32 0
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue