$OpenBSD: patch-tools_clang_lib_Driver_ToolChains_Arch_X86_cpp,v 1.6 2021/05/13 23:54:25 jca Exp $

- Turn on -mretpoline by default in clang on amd64.

Index: tools/clang/lib/Driver/ToolChains/Arch/X86.cpp
--- tools/clang/lib/Driver/ToolChains/Arch/X86.cpp.orig
+++ tools/clang/lib/Driver/ToolChains/Arch/X86.cpp
@@ -148,6 +148,12 @@ void x86::getX86TargetFeatures(const Driver &D, const 
   // consider deprecating this and instead warn if the user requests external
   // retpoline thunks and *doesn't* request some form of retpolines.
   auto SpectreOpt = clang::driver::options::ID::OPT_INVALID;
+  if (Triple.isOSOpenBSD() && Triple.getArch() == llvm::Triple::x86_64 &&
+      Args.hasFlag(options::OPT_mretpoline, options::OPT_mno_retpoline, true)) {
+      Features.push_back("+retpoline-indirect-calls");
+      Features.push_back("+retpoline-indirect-branches");
+      SpectreOpt = options::OPT_mretpoline;
+  } else
   if (Args.hasArgNoClaim(options::OPT_mretpoline, options::OPT_mno_retpoline,
                          options::OPT_mspeculative_load_hardening,
                          options::OPT_mno_speculative_load_hardening)) {
