$OpenBSD: patch-tools_clang_lib_Driver_ToolChains_Arch_AArch64_cpp,v 1.2 2018/04/07 14:55:42 ajacoutot Exp $

Make LLVM create strict aligned code for OpenBSD/arm64.

Index: tools/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
--- tools/clang/lib/Driver/ToolChains/Arch/AArch64.cpp.orig
+++ tools/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
@@ -149,7 +149,8 @@ getAArch64MicroArchFeaturesFromMcpu(const Driver &D, S
   return getAArch64MicroArchFeaturesFromMtune(D, CPU, Args, Features);
 }
 
-void aarch64::getAArch64TargetFeatures(const Driver &D, const ArgList &Args,
+void aarch64::getAArch64TargetFeatures(const Driver &D, const llvm::Triple &Triple,
+                                       const ArgList &Args,
                                        std::vector<StringRef> &Features) {
   Arg *A;
   bool success = true;
@@ -191,9 +192,11 @@ void aarch64::getAArch64TargetFeatures(const Driver &D
   }
 
   if (Arg *A = Args.getLastArg(options::OPT_mno_unaligned_access,
-                               options::OPT_munaligned_access))
+                               options::OPT_munaligned_access)) {
     if (A->getOption().matches(options::OPT_mno_unaligned_access))
       Features.push_back("+strict-align");
+  } else if (Triple.isOSOpenBSD())
+    Features.push_back("+strict-align");
 
   if (Args.hasArg(options::OPT_ffixed_x18))
     Features.push_back("+reserve-x18");
