Unaligned access is supported on ARMv6 and ARMv7 for the NetBSD target.
authorJoerg Sonnenberger <joerg@bec.de>
Sun, 2 Feb 2014 21:18:36 +0000 (21:18 +0000)
committerJoerg Sonnenberger <joerg@bec.de>
Sun, 2 Feb 2014 21:18:36 +0000 (21:18 +0000)
Patch from Matt Thomas.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200654 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMSubtarget.cpp
lib/Target/ARM/ARMSubtarget.h

index e804de5c9033e53ac94709aa2de8eba328fbd28a..a240d1916f49eba77d786fbf604dabf67b1dd3b5 100644 (file)
@@ -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;
index ef49e6db07f22f081fbbd299b748972f6ea48b2e..1d80d1b370bb904451a03881355dbdd900a40477 100644 (file)
@@ -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(); }