mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
For Darwin / x86_64, override -relocation-model=static to pic if the output is assembly since Darwin assembler does not really support -static codeine.
I view this as a temporary workaround until the assembler / linker changes. llvm-svn: 72806
This commit is contained in:
parent
6a35862267
commit
b71402d6ae
@ -213,6 +213,13 @@ bool X86TargetMachine::addAssemblyEmitter(PassManagerBase &PM,
|
|||||||
CodeGenOpt::Level OptLevel,
|
CodeGenOpt::Level OptLevel,
|
||||||
bool Verbose,
|
bool Verbose,
|
||||||
raw_ostream &Out) {
|
raw_ostream &Out) {
|
||||||
|
// FIXME: Move this somewhere else!
|
||||||
|
// On Darwin, override 64-bit static relocation to pic_ since the
|
||||||
|
// assembler doesn't support it.
|
||||||
|
if (DefRelocModel == Reloc::Static &&
|
||||||
|
Subtarget.isTargetDarwin() && Subtarget.is64Bit())
|
||||||
|
setRelocationModel(Reloc::PIC_);
|
||||||
|
|
||||||
assert(AsmPrinterCtor && "AsmPrinter was not linked in");
|
assert(AsmPrinterCtor && "AsmPrinter was not linked in");
|
||||||
if (AsmPrinterCtor)
|
if (AsmPrinterCtor)
|
||||||
PM.add(AsmPrinterCtor(Out, *this, OptLevel, Verbose));
|
PM.add(AsmPrinterCtor(Out, *this, OptLevel, Verbose));
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | llc -march=x86-64 -relocation-model=static -stats -info-output-file - > %t
|
; RUN: llvm-as < %s | llc -mtriple=x86_64-linux -relocation-model=static -stats -info-output-file - > %t
|
||||||
; RUN: not grep spill %t
|
; RUN: not grep spill %t
|
||||||
; RUN: not grep {%rsp} %t
|
; RUN: not grep {%rsp} %t
|
||||||
; RUN: not grep {%rbp} %t
|
; RUN: not grep {%rbp} %t
|
||||||
|
@ -141,26 +141,6 @@
|
|||||||
; RUN: not grep @PLTOFF %t
|
; RUN: not grep @PLTOFF %t
|
||||||
; RUN: grep {call \\\*} %t | count 10
|
; RUN: grep {call \\\*} %t | count 10
|
||||||
; RUN: not grep {%rip} %t
|
; RUN: not grep {%rip} %t
|
||||||
; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small > %t
|
|
||||||
; RUN: not grep leal %t
|
|
||||||
; RUN: grep movl %t | count 91
|
|
||||||
; RUN: not grep addl %t
|
|
||||||
; RUN: not grep subl %t
|
|
||||||
; RUN: grep leaq %t | count 70
|
|
||||||
; RUN: grep movq %t | count 56
|
|
||||||
; RUN: grep addq %t | count 20
|
|
||||||
; RUN: grep subq %t | count 14
|
|
||||||
; RUN: not grep movabs %t
|
|
||||||
; RUN: not grep largecomm %t
|
|
||||||
; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
|
|
||||||
; RUN: not grep @GOT %t
|
|
||||||
; RUN: not grep @GOTOFF %t
|
|
||||||
; RUN: not grep @GOTPCREL %t
|
|
||||||
; RUN: not grep @GOTPLT %t
|
|
||||||
; RUN: not grep @PLT %t
|
|
||||||
; RUN: not grep @PLTOFF %t
|
|
||||||
; RUN: grep {call \\\*} %t | count 10
|
|
||||||
; RUN: grep {%rip} %t | count 139
|
|
||||||
; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small > %t
|
; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small > %t
|
||||||
; RUN: not grep leal %t
|
; RUN: not grep leal %t
|
||||||
; RUN: grep movl %t | count 95
|
; RUN: grep movl %t | count 95
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
; RUN: not grep lea %t
|
; RUN: not grep lea %t
|
||||||
; RUN: not grep add %t
|
; RUN: not grep add %t
|
||||||
; RUN: grep mov %t | count 1
|
; RUN: grep mov %t | count 1
|
||||||
; RUN: llvm-as < %s | llc -march=x86-64 -relocation-model=static > %t
|
; RUN: llvm-as < %s | llc -mtriple=x86_64-linux -relocation-model=static > %t
|
||||||
; RUN: not grep lea %t
|
; RUN: not grep lea %t
|
||||||
; RUN: not grep add %t
|
; RUN: not grep add %t
|
||||||
; RUN: grep mov %t | count 1
|
; RUN: grep mov %t | count 1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | llc -march=x86-64 -relocation-model=static -aggressive-remat | grep xmm | count 2
|
; RUN: llvm-as < %s | llc -mtriple=x86_64-linux -relocation-model=static -aggressive-remat | grep xmm | count 2
|
||||||
|
|
||||||
declare void @bar() nounwind
|
declare void @bar() nounwind
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user