diff options
author | Joerg Sonnenberger <joerg@bec.de> | 2014-02-02 21:18:36 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@bec.de> | 2014-02-02 21:18:36 +0000 |
commit | 4455ffc4d067d2d30cf810006d5ba24c9805e417 (patch) | |
tree | a7b19bed4d75fbddd0fc7d5a7f809bb5226a170f /llvm/lib/Target | |
parent | 514ecc8ce811a1f2e9a29218a9bd7f76b5595b6f (diff) | |
download | bcm5719-llvm-4455ffc4d067d2d30cf810006d5ba24c9805e417.tar.gz bcm5719-llvm-4455ffc4d067d2d30cf810006d5ba24c9805e417.zip |
Unaligned access is supported on ARMv6 and ARMv7 for the NetBSD target.
Patch from Matt Thomas.
llvm-svn: 200654
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/ARM/ARMSubtarget.cpp | 7 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMSubtarget.h | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.cpp b/llvm/lib/Target/ARM/ARMSubtarget.cpp index e804de5c903..a240d1916f4 100644 --- a/llvm/lib/Target/ARM/ARMSubtarget.cpp +++ b/llvm/lib/Target/ARM/ARMSubtarget.cpp @@ -237,9 +237,10 @@ void ARMSubtarget::resetSubtargetFeatures(StringRef CPU, StringRef FS) { // Linux targets support unaligned accesses. The same goes for NaCl. // // The above behavior is consistent with GCC. - AllowsUnalignedMem = ( - (hasV7Ops() && (isTargetLinux() || isTargetNaCl())) || - (hasV6Ops() && isTargetMachO())); + AllowsUnalignedMem = + (hasV7Ops() && (isTargetLinux() || isTargetNaCl() || + isTargetNetBSD())) || + (hasV6Ops() && (isTargetMachO() || isTargetNetBSD())); break; case StrictAlign: AllowsUnalignedMem = false; diff --git a/llvm/lib/Target/ARM/ARMSubtarget.h b/llvm/lib/Target/ARM/ARMSubtarget.h index ef49e6db07f..1d80d1b370b 100644 --- a/llvm/lib/Target/ARM/ARMSubtarget.h +++ b/llvm/lib/Target/ARM/ARMSubtarget.h @@ -311,6 +311,9 @@ public: bool isTargetDarwin() const { return TargetTriple.isOSDarwin(); } bool isTargetNaCl() const { return TargetTriple.isOSNaCl(); } bool isTargetLinux() const { return TargetTriple.isOSLinux(); } + bool isTargetNetBSD() const { + return TargetTriple.getOS() == Triple::NetBSD; + } bool isTargetELF() const { return TargetTriple.isOSBinFormatELF(); } bool isTargetMachO() const { return TargetTriple.isOSBinFormatMachO(); } |