mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-14 15:28:20 +00:00
[mips] Do not emit '.module fp=...' unless we really need to.
We now emit this value when we need to contradict the default value. This restores support for binutils 2.24. When a suitable binutils has been released we can resume unconditionally emitting .module directives. This is preferable to omitting the .module directives since the .module directives protect against, for example, accidentally assembling FP32 code with -mfp64 and producing an unusuable object. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213548 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -708,16 +708,21 @@ void MipsAsmPrinter::EmitStartOfAsmFile(Module &M) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getTargetStreamer().updateABIInfo(*Subtarget);
|
getTargetStreamer().updateABIInfo(*Subtarget);
|
||||||
getTargetStreamer().emitDirectiveModuleFP();
|
|
||||||
|
|
||||||
// If we are targeting O32 then we must emit a '.module [no]oddspreg' ...
|
// We should always emit a '.module fp=...' but binutils 2.24 does not accept
|
||||||
if (Subtarget->isABI_O32()) {
|
// it. We therefore emit it when it contradicts the ABI defaults (-mfpxx or
|
||||||
// ... but don't emit it unless we are contradicting the default or an
|
// -mfp64) and omit it otherwise.
|
||||||
// option has changed the default (i.e. FPXX).
|
if (Subtarget->isABI_O32() && (Subtarget->isABI_FPXX() ||
|
||||||
if (!Subtarget->useOddSPReg() || Subtarget->isABI_FPXX())
|
Subtarget->isFP64bit()))
|
||||||
getTargetStreamer().emitDirectiveModuleOddSPReg(Subtarget->useOddSPReg(),
|
getTargetStreamer().emitDirectiveModuleFP();
|
||||||
Subtarget->isABI_O32());
|
|
||||||
}
|
// We should always emit a '.module [no]oddspreg' but binutils 2.24 does not
|
||||||
|
// accept it. We therefore emit it when it contradicts the default or an
|
||||||
|
// option has changed the default (i.e. FPXX) and omit it otherwise.
|
||||||
|
if (Subtarget->isABI_O32() && (!Subtarget->useOddSPReg() ||
|
||||||
|
Subtarget->isABI_FPXX()))
|
||||||
|
getTargetStreamer().emitDirectiveModuleOddSPReg(Subtarget->useOddSPReg(),
|
||||||
|
Subtarget->isABI_O32());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MipsAsmPrinter::EmitJal(MCSymbol *Symbol) {
|
void MipsAsmPrinter::EmitJal(MCSymbol *Symbol) {
|
||||||
|
@@ -3,10 +3,15 @@
|
|||||||
; RUN: llc -filetype=asm -mtriple mipsel-unknown-linux -mcpu=mips64 -mattr=-n64,n32 %s -o - | FileCheck -check-prefix=CHECK-64n %s
|
; RUN: llc -filetype=asm -mtriple mipsel-unknown-linux -mcpu=mips64 -mattr=-n64,n32 %s -o - | FileCheck -check-prefix=CHECK-64n %s
|
||||||
|
|
||||||
; CHECK: .nan legacy
|
; CHECK: .nan legacy
|
||||||
; CHECK: .module fp=32
|
; We don't emit '.module fp=32' for compatibility with binutils 2.24 which
|
||||||
|
; doesn't accept .module.
|
||||||
|
; CHECK-NOT: .module fp=32
|
||||||
|
|
||||||
; CHECK-64: .nan legacy
|
; CHECK-64: .nan legacy
|
||||||
|
; We do emit '.module fp=64' though since it contradicts the default value.
|
||||||
; CHECK-64: .module fp=64
|
; CHECK-64: .module fp=64
|
||||||
|
|
||||||
; CHECK-64n: .nan legacy
|
; CHECK-64n: .nan legacy
|
||||||
; CHECK-64n: .module fp=64
|
; We don't emit '.module fp=64' for compatibility with binutils 2.24 which
|
||||||
|
; doesn't accept .module.
|
||||||
|
; CHECK-64n-NOT: .module fp=64
|
||||||
|
Reference in New Issue
Block a user