llvm.org GIT mirror llvm / 2479def
[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 Daniel Sanders 6 years ago
2 changed file(s) with 22 addition(s) and 12 deletion(s). Raw diff Collapse all Expand all
707707 }
708708
709709 getTargetStreamer().updateABIInfo(*Subtarget);
710 getTargetStreamer().emitDirectiveModuleFP();
711
712 // If we are targeting O32 then we must emit a '.module [no]oddspreg' ...
713 if (Subtarget->isABI_O32()) {
714 // ... but don't emit it unless we are contradicting the default or an
715 // option has changed the default (i.e. FPXX).
716 if (!Subtarget->useOddSPReg() || Subtarget->isABI_FPXX())
717 getTargetStreamer().emitDirectiveModuleOddSPReg(Subtarget->useOddSPReg(),
718 Subtarget->isABI_O32());
719 }
710
711 // We should always emit a '.module fp=...' but binutils 2.24 does not accept
712 // it. We therefore emit it when it contradicts the ABI defaults (-mfpxx or
713 // -mfp64) and omit it otherwise.
714 if (Subtarget->isABI_O32() && (Subtarget->isABI_FPXX() ||
715 Subtarget->isFP64bit()))
716 getTargetStreamer().emitDirectiveModuleFP();
717
718 // We should always emit a '.module [no]oddspreg' but binutils 2.24 does not
719 // accept it. We therefore emit it when it contradicts the default or an
720 // option has changed the default (i.e. FPXX) and omit it otherwise.
721 if (Subtarget->isABI_O32() && (!Subtarget->useOddSPReg() ||
722 Subtarget->isABI_FPXX()))
723 getTargetStreamer().emitDirectiveModuleOddSPReg(Subtarget->useOddSPReg(),
724 Subtarget->isABI_O32());
720725 }
721726
722727 void MipsAsmPrinter::EmitJal(MCSymbol *Symbol) {
22 ; RUN: llc -filetype=asm -mtriple mipsel-unknown-linux -mcpu=mips64 -mattr=-n64,n32 %s -o - | FileCheck -check-prefix=CHECK-64n %s
33
44 ; CHECK: .nan legacy
5 ; CHECK: .module fp=32
5 ; We don't emit '.module fp=32' for compatibility with binutils 2.24 which
6 ; doesn't accept .module.
7 ; CHECK-NOT: .module fp=32
68
79 ; CHECK-64: .nan legacy
10 ; We do emit '.module fp=64' though since it contradicts the default value.
811 ; CHECK-64: .module fp=64
912
1013 ; CHECK-64n: .nan legacy
11 ; CHECK-64n: .module fp=64
14 ; We don't emit '.module fp=64' for compatibility with binutils 2.24 which
15 ; doesn't accept .module.
16 ; CHECK-64n-NOT: .module fp=64