$OpenBSD: patch-src_rustllvm_PassWrapper_cpp,v 1.3 2018/02/23 16:38:16 landry Exp $
Backport patches for LLVM 6 compatibility:
 2a7ed74d96168fe1c187fbaa0d74dc52974b6ecf
 03f86ae9829a0a5c6f4fbef0530809b1d24ede3c
Index: src/rustllvm/PassWrapper.cpp
--- src/rustllvm/PassWrapper.cpp.orig
+++ src/rustllvm/PassWrapper.cpp
@@ -23,7 +23,14 @@
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Host.h"
 #include "llvm/Target/TargetMachine.h"
+
+#if LLVM_VERSION_GE(6, 0)
+#include "llvm/CodeGen/TargetSubtargetInfo.h"
+#include "llvm/IR/IntrinsicInst.h"
+#else
 #include "llvm/Target/TargetSubtargetInfo.h"
+#endif
+
 #include "llvm/Transforms/IPO/PassManagerBuilder.h"
 
 #if LLVM_VERSION_GE(4, 0)
@@ -210,20 +217,15 @@ extern "C" bool LLVMRustHasFeature(LLVMTargetMachineRe
 
 enum class LLVMRustCodeModel {
   Other,
-  Default,
-  JITDefault,
   Small,
   Kernel,
   Medium,
   Large,
+  None,
 };
 
 static CodeModel::Model fromRust(LLVMRustCodeModel Model) {
   switch (Model) {
-  case LLVMRustCodeModel::Default:
-    return CodeModel::Default;
-  case LLVMRustCodeModel::JITDefault:
-    return CodeModel::JITDefault;
   case LLVMRustCodeModel::Small:
     return CodeModel::Small;
   case LLVMRustCodeModel::Kernel:
@@ -360,7 +362,6 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMa
     bool TrapUnreachable,
     bool Singlethread) {
 
-  auto CM = fromRust(RustCM);
   auto OptLevel = fromRust(RustOptLevel);
   auto RM = fromRust(RustReloc);
 
@@ -398,6 +399,14 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMa
   if (Singlethread) {
     Options.ThreadModel = ThreadModel::Single;
   }
+
+#if LLVM_VERSION_GE(6, 0)
+  Optional<CodeModel::Model> CM;
+#else
+  CodeModel::Model CM = CodeModel::Model::Default;
+#endif
+  if (RustCM != LLVMRustCodeModel::None)
+      CM = fromRust(RustCM);
 
   TargetMachine *TM = TheTarget->createTargetMachine(
       Trip.getTriple(), RealCPU, Feature, Options, RM, CM, OptLevel);
