From a31d45bb574040f3a91c6990f57a095eefbfc7fc Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Fri, 27 May 2016 21:44:18 +0000 Subject: [PATCH] Map DynamicNoPIC to Static on non-darwin. DynamicNoPIC was only every used on darwin. This maps it to static on ELF. It matches what is done on X86. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271052 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMTargetMachine.cpp | 5 ++ test/CodeGen/ARM/fast-isel-call.ll | 26 ++++++--- test/CodeGen/ARM/fast-isel-intrinsic.ll | 97 +++++++++++++++++++++++---------- test/CodeGen/ARM/fast-isel.ll | 14 +++-- 4 files changed, 101 insertions(+), 41 deletions(-) diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index 81127f7b813..d3276f79b5e 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp @@ -177,6 +177,11 @@ static Reloc::Model getEffectiveRelocModel(const Triple &TT, if (!RM.hasValue()) // Default relocation model on Darwin is PIC, not DynamicNoPIC. return TT.isOSDarwin() ? Reloc::PIC_ : Reloc::DynamicNoPIC; + + // DynamicNoPIC is only used on darwin. + if (*RM == Reloc::DynamicNoPIC && !TT.isOSDarwin()) + return Reloc::Static; + return *RM; } diff --git a/test/CodeGen/ARM/fast-isel-call.ll b/test/CodeGen/ARM/fast-isel-call.ll index e382e78a995..1122867356b 100644 --- a/test/CodeGen/ARM/fast-isel-call.ll +++ b/test/CodeGen/ARM/fast-isel-call.ll @@ -1,8 +1,8 @@ ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB -; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=+long-calls | FileCheck %s --check-prefix=ARM-LONG -; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -mattr=+long-calls | FileCheck %s --check-prefix=ARM-LONG +; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=+long-calls | FileCheck %s --check-prefix=ARM-LONG --check-prefix=ARM-LONG-MACHO +; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -mattr=+long-calls | FileCheck %s --check-prefix=ARM-LONG --check-prefix=ARM-LONG-ELF ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -mattr=+long-calls | FileCheck %s --check-prefix=THUMB-LONG ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=-vfp2 | FileCheck %s --check-prefix=ARM-NOVFP ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -mattr=-vfp2 | FileCheck %s --check-prefix=ARM-NOVFP @@ -111,9 +111,14 @@ entry: ; ARM: str [[R4]], [sp, #4] ; ARM: bl {{_?}}bar ; ARM-LONG: @t10 -; ARM-LONG: {{(movw)|(ldr)}} [[R:l?r[0-9]*]], {{(:lower16:L_bar\$non_lazy_ptr)|(.LCPI)}} -; ARM-LONG: {{(movt [[R]], :upper16:L_bar\$non_lazy_ptr)?}} -; ARM-LONG: ldr [[R]], {{\[}}[[R]]{{\]}} + +; ARM-LONG-MACHO: {{(movw)|(ldr)}} [[R:l?r[0-9]*]], {{(:lower16:L_bar\$non_lazy_ptr)|(.LCPI)}} +; ARM-LONG-MACHO: {{(movt [[R]], :upper16:L_bar\$non_lazy_ptr)?}} +; ARM-LONG-MACHO: ldr [[R]], {{\[}}[[R]]{{\]}} + +; ARM-LONG-ELF: movw [[R:l?r[0-9]*]], :lower16:bar +; ARM-LONG-ELF: {{(movt [[R]], :upper16:L_bar\$non_lazy_ptr)?}} + ; ARM-LONG: blx [[R]] ; THUMB: @t10 ; THUMB: movs [[R0:l?r[0-9]*]], #0 @@ -167,9 +172,14 @@ entry: ; ARM: LibCall ; ARM: bl {{___udivsi3|__aeabi_uidiv}} ; ARM-LONG: LibCall -; ARM-LONG: {{(movw r2, :lower16:L___udivsi3\$non_lazy_ptr)|(ldr r2, .LCPI)}} -; ARM-LONG: {{(movt r2, :upper16:L___udivsi3\$non_lazy_ptr)?}} -; ARM-LONG: ldr r2, [r2] + +; ARM-LONG-MACHO: {{(movw r2, :lower16:L___udivsi3\$non_lazy_ptr)|(ldr r2, .LCPI)}} +; ARM-LONG-MACHO: {{(movt r2, :upper16:L___udivsi3\$non_lazy_ptr)?}} +; ARM-LONG-MACHO: ldr r2, [r2] + +; ARM-LONG-ELF: movw r2, :lower16:__aeabi_uidiv +; ARM-LONG-ELF: movt r2, :upper16:__aeabi_uidiv + ; ARM-LONG: blx r2 ; THUMB: LibCall ; THUMB: bl {{___udivsi3|__aeabi_uidiv}} diff --git a/test/CodeGen/ARM/fast-isel-intrinsic.ll b/test/CodeGen/ARM/fast-isel-intrinsic.ll index 1c7ff687938..277461aa566 100644 --- a/test/CodeGen/ARM/fast-isel-intrinsic.ll +++ b/test/CodeGen/ARM/fast-isel-intrinsic.ll @@ -1,8 +1,8 @@ -; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=ARM -; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -verify-machineinstrs | FileCheck %s --check-prefix=ARM +; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=ARM --check-prefix=ARM-MACHO +; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -verify-machineinstrs | FileCheck %s --check-prefix=ARM --check-prefix=ARM-ELF ; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=THUMB -; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=+long-calls -verify-machineinstrs | FileCheck %s --check-prefix=ARM-LONG -; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -mattr=+long-calls -verify-machineinstrs | FileCheck %s --check-prefix=ARM-LONG +; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=+long-calls -verify-machineinstrs | FileCheck %s --check-prefix=ARM-LONG --check-prefix=ARM-LONG-MACHO +; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -mattr=+long-calls -verify-machineinstrs | FileCheck %s --check-prefix=ARM-LONG --check-prefix=ARM-LONG-ELF ; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -mattr=+long-calls -verify-machineinstrs | FileCheck %s --check-prefix=THUMB-LONG ; Note that some of these tests assume that relocations are either @@ -22,9 +22,14 @@ define void @t1() nounwind ssp { ; ARM: and r1, r1, #255 ; ARM: bl {{_?}}memset ; ARM-LONG-LABEL: t1: -; ARM-LONG: {{(movw r3, :lower16:L_memset\$non_lazy_ptr)|(ldr r3, .LCPI)}} -; ARM-LONG: {{(movt r3, :upper16:L_memset\$non_lazy_ptr)?}} -; ARM-LONG: ldr r3, [r3] + +; ARM-LONG-MACHO: {{(movw r3, :lower16:L_memset\$non_lazy_ptr)|(ldr r3, .LCPI)}} +; ARM-LONG-MACHO: {{(movt r3, :upper16:L_memset\$non_lazy_ptr)?}} +; ARM-LONG-MACHO: ldr r3, [r3] + +; ARM-LONG-ELF: movw r3, :lower16:memset +; ARM-LONG-ELF: movt r3, :upper16:memset + ; ARM-LONG: blx r3 ; THUMB-LABEL: t1: ; THUMB: {{(movw r0, :lower16:_?message1)|(ldr.n r0, .LCPI)}} @@ -47,9 +52,14 @@ declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind define void @t2() nounwind ssp { ; ARM-LABEL: t2: -; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} -; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} -; ARM: ldr r0, [r0] + +; ARM-MACHO: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} +; ARM-MACHO: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} +; ARM-MACHO: ldr r0, [r0] + +; ARM-ELF: movw r0, :lower16:temp +; ARM-ELF: movt r0, :upper16:temp + ; ARM: add r1, r0, #4 ; ARM: add r0, r0, #16 ; ARM: movw r2, #17 @@ -58,9 +68,14 @@ define void @t2() nounwind ssp { ; ARM: ldr r1, [sp[[SLOT]]] @ 4-byte Reload ; ARM: bl {{_?}}memcpy ; ARM-LONG-LABEL: t2: -; ARM-LONG: {{(movw r3, :lower16:L_memcpy\$non_lazy_ptr)|(ldr r3, .LCPI)}} -; ARM-LONG: {{(movt r3, :upper16:L_memcpy\$non_lazy_ptr)?}} -; ARM-LONG: ldr r3, [r3] + +; ARM-LONG-MACHO: {{(movw r3, :lower16:L_memcpy\$non_lazy_ptr)|(ldr r3, .LCPI)}} +; ARM-LONG-MACHO: {{(movt r3, :upper16:L_memcpy\$non_lazy_ptr)?}} +; ARM-LONG-MACHO: ldr r3, [r3] + +; ARM-LONG-ELF: movw r3, :lower16:memcpy +; ARM-LONG-ELF: movt r3, :upper16:memcpy + ; ARM-LONG: blx r3 ; THUMB-LABEL: t2: ; THUMB: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr.n r0, .LCPI)}} @@ -86,18 +101,29 @@ declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, define void @t3() nounwind ssp { ; ARM-LABEL: t3: -; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} -; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} -; ARM: ldr r0, [r0] + +; ARM-MACHO: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} +; ARM-MACHO: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} +; ARM-MACHO: ldr r0, [r0] + +; ARM-ELF: movw r0, :lower16:temp +; ARM-ELF: movt r0, :upper16:temp + + ; ARM: add r1, r0, #4 ; ARM: add r0, r0, #16 ; ARM: movw r2, #10 ; ARM: mov r0, r1 ; ARM: bl {{_?}}memmove ; ARM-LONG-LABEL: t3: -; ARM-LONG: {{(movw r3, :lower16:L_memmove\$non_lazy_ptr)|(ldr r3, .LCPI)}} -; ARM-LONG: {{(movt r3, :upper16:L_memmove\$non_lazy_ptr)?}} -; ARM-LONG: ldr r3, [r3] + +; ARM-LONG-MACHO: {{(movw r3, :lower16:L_memmove\$non_lazy_ptr)|(ldr r3, .LCPI)}} +; ARM-LONG-MACHO: {{(movt r3, :upper16:L_memmove\$non_lazy_ptr)?}} +; ARM-LONG-MACHO: ldr r3, [r3] + +; ARM-LONG-ELF: movw r3, :lower16:memmove +; ARM-LONG-ELF: movt r3, :upper16:memmove + ; ARM-LONG: blx r3 ; THUMB-LABEL: t3: ; THUMB: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr.n r0, .LCPI)}} @@ -121,9 +147,14 @@ define void @t3() nounwind ssp { define void @t4() nounwind ssp { ; ARM-LABEL: t4: -; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} -; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} -; ARM: ldr r0, [r0] + +; ARM-MACHO: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} +; ARM-MACHO: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} +; ARM-MACHO: ldr r0, [r0] + +; ARM-ELF: movw r0, :lower16:temp +; ARM-ELF: movt r0, :upper16:temp + ; ARM: ldr r1, [r0, #16] ; ARM: str r1, [r0, #4] ; ARM: ldr r1, [r0, #20] @@ -150,9 +181,14 @@ declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, define void @t5() nounwind ssp { ; ARM-LABEL: t5: -; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} -; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} -; ARM: ldr r0, [r0] + +; ARM-MACHO: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} +; ARM-MACHO: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} +; ARM-MACHO: ldr r0, [r0] + +; ARM-ELF: movw r0, :lower16:temp +; ARM-ELF: movt r0, :upper16:temp + ; ARM: ldrh r1, [r0, #16] ; ARM: strh r1, [r0, #4] ; ARM: ldrh r1, [r0, #18] @@ -185,9 +221,14 @@ define void @t5() nounwind ssp { define void @t6() nounwind ssp { ; ARM-LABEL: t6: -; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} -; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} -; ARM: ldr r0, [r0] + +; ARM-MACHO: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}} +; ARM-MACHO: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}} +; ARM-MACHO: ldr r0, [r0] + +; ARM-ELF: movw r0, :lower16:temp +; ARM-ELF: movt r0, :upper16:temp + ; ARM: ldrb r1, [r0, #16] ; ARM: strb r1, [r0, #4] ; ARM: ldrb r1, [r0, #17] diff --git a/test/CodeGen/ARM/fast-isel.ll b/test/CodeGen/ARM/fast-isel.ll index 49460220c47..502285e85df 100644 --- a/test/CodeGen/ARM/fast-isel.ll +++ b/test/CodeGen/ARM/fast-isel.ll @@ -1,5 +1,5 @@ -; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=ARM -; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -verify-machineinstrs | FileCheck %s --check-prefix=ARM +; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=ARM --check-prefix=ARM-MACHO +; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -verify-machineinstrs | FileCheck %s --check-prefix=ARM --check-prefix=ARM-ELF ; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=THUMB ; Very basic fast-isel functionality. @@ -154,9 +154,13 @@ define void @test4() { ; THUMB: adds r1, #1 ; THUMB: str r1, [r0] -; ARM: {{(movw r0, :lower16:L_test4g\$non_lazy_ptr)|(ldr r0, .LCPI)}} -; ARM: {{(movt r0, :upper16:L_test4g\$non_lazy_ptr)?}} -; ARM: ldr r0, [r0] +; ARM-MACHO: {{(movw r0, :lower16:L_test4g\$non_lazy_ptr)|(ldr r0, .LCPI)}} +; ARM-MACHO: {{(movt r0, :upper16:L_test4g\$non_lazy_ptr)?}} +; ARM-MACHO: ldr r0, [r0] + +; ARM-ELF: movw r0, :lower16:test4g +; ARM-ELF: movt r0, :upper16:test4g + ; ARM: ldr r1, [r0] ; ARM: add r1, r1, #1 ; ARM: str r1, [r0] -- 2.11.0