diff options
| author | Tim Northover <tnorthover@apple.com> | 2018-07-18 12:36:25 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2018-07-18 12:36:25 +0000 |
| commit | 097a3e3d957f1539c7ccb7c417300e9f838f4b28 (patch) | |
| tree | 0fa030ec07de24d06470579e9e2d0b0bf99784b7 /llvm/lib/Target | |
| parent | 330d887d72f4a298bef86c4d3fd6f628e5bc9e2c (diff) | |
| download | bcm5719-llvm-097a3e3d957f1539c7ccb7c417300e9f838f4b28.tar.gz bcm5719-llvm-097a3e3d957f1539c7ccb7c417300e9f838f4b28.zip | |
ARM: deduplicate hard-float detection code. NFC.
ARMSubtarget had a copy/pasted block to determine whether the target was
hard-float, but it just delegated to triple features anyway so it's better at
the TargetMachine level.
llvm-svn: 337384
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMSubtarget.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMSubtarget.h | 8 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMTargetMachine.cpp | 6 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMTargetMachine.h | 8 |
4 files changed, 12 insertions, 12 deletions
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.cpp b/llvm/lib/Target/ARM/ARMSubtarget.cpp index 23027e92481..f42cbbda1b7 100644 --- a/llvm/lib/Target/ARM/ARMSubtarget.cpp +++ b/llvm/lib/Target/ARM/ARMSubtarget.cpp @@ -302,6 +302,8 @@ void ARMSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { } } +bool ARMSubtarget::isTargetHardFloat() const { return TM.isTargetHardFloat(); } + bool ARMSubtarget::isAPCS_ABI() const { assert(TM.TargetABI != ARMBaseTargetMachine::ARM_ABI_UNKNOWN); return TM.TargetABI == ARMBaseTargetMachine::ARM_ABI_APCS; diff --git a/llvm/lib/Target/ARM/ARMSubtarget.h b/llvm/lib/Target/ARM/ARMSubtarget.h index d665f9355ee..93856e3dc38 100644 --- a/llvm/lib/Target/ARM/ARMSubtarget.h +++ b/llvm/lib/Target/ARM/ARMSubtarget.h @@ -666,13 +666,7 @@ public: !isTargetDarwin() && !isTargetWindows(); } - bool isTargetHardFloat() const { - // FIXME: this is invalid for WindowsCE - return TargetTriple.getEnvironment() == Triple::GNUEABIHF || - TargetTriple.getEnvironment() == Triple::MuslEABIHF || - TargetTriple.getEnvironment() == Triple::EABIHF || - isTargetWindows() || isAAPCS16_ABI(); - } + bool isTargetHardFloat() const; bool isTargetAndroid() const { return TargetTriple.isAndroid(); } diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp index bc2525b6b42..3189e85b8ca 100644 --- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp +++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp @@ -215,11 +215,7 @@ ARMBaseTargetMachine::ARMBaseTargetMachine(const Target &T, const Triple &TT, // Default to triple-appropriate float ABI if (Options.FloatABIType == FloatABI::Default) { - if (TargetTriple.getEnvironment() == Triple::GNUEABIHF || - TargetTriple.getEnvironment() == Triple::MuslEABIHF || - TargetTriple.getEnvironment() == Triple::EABIHF || - TargetTriple.isOSWindows() || - TargetABI == ARMBaseTargetMachine::ARM_ABI_AAPCS16) + if (isTargetHardFloat()) this->Options.FloatABIType = FloatABI::Hard; else this->Options.FloatABIType = FloatABI::Soft; diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.h b/llvm/lib/Target/ARM/ARMTargetMachine.h index 2072bb731f0..811fd5bb339 100644 --- a/llvm/lib/Target/ARM/ARMTargetMachine.h +++ b/llvm/lib/Target/ARM/ARMTargetMachine.h @@ -61,6 +61,14 @@ public: TargetLoweringObjectFile *getObjFileLowering() const override { return TLOF.get(); } + + bool isTargetHardFloat() const { + return TargetTriple.getEnvironment() == Triple::GNUEABIHF || + TargetTriple.getEnvironment() == Triple::MuslEABIHF || + TargetTriple.getEnvironment() == Triple::EABIHF || + TargetTriple.isOSWindows() || + TargetABI == ARMBaseTargetMachine::ARM_ABI_AAPCS16; + } }; /// ARM/Thumb little endian target machine. |

