summaryrefslogtreecommitdiff
path: root/libre/clamav/Add-support-for-LLVM-3.9.patch
blob: 084d41c1aac600106436074a639598768d95d9a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
From fef1bbc259bca9cfaac65a85de877f9b7ed27773 Mon Sep 17 00:00:00 2001
From: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Date: Fri, 14 Oct 2016 20:24:56 +0200
Subject: Add support for LLVM 3.9

Changes:
IRBuilder no longer has a preserveNames template argument.
AtomicOrdering is now a strongly typed enum.

Patch-Name: Add-support-for-LLVM-3.9.patch
---
 libclamav/c++/bytecode2llvm.cpp | 12 +++++++++++-
 libclamav/c++/m4/llvm-flags.m4  |  4 ++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/libclamav/c++/bytecode2llvm.cpp b/libclamav/c++/bytecode2llvm.cpp
index 213847c..252f8f6 100644
--- a/libclamav/c++/bytecode2llvm.cpp
+++ b/libclamav/c++/bytecode2llvm.cpp
@@ -787,7 +787,11 @@ class RuntimeLimits : public FunctionPass {
         AbrtC->setDoesNotThrow();
 #endif
         new UnreachableInst(F.getContext(), AbrtBB);
+#if LLVM_VERSION < 39
 	IRBuilder<false> Builder(F.getContext());
+#else
+    IRBuilder<> Builder(F.getContext());
+#endif
 
 #if LLVM_VERSION < 38
 	Value *Flag = F.arg_begin();
@@ -825,8 +829,10 @@ class RuntimeLimits : public FunctionPass {
 #if LLVM_VERSION < 30
 	    // store-load barrier: will be a no-op on x86 but not other arches
 	    Builder.CreateCall(LSBarrier, ARRAYREF(Value*, MBArgs, MBArgs+5));
-#else
+#elif LLVM_VERSION < 39
 	    Builder.CreateFence(Release);
+#else
+        Builder.CreateFence(AtomicOrdering::Release);
 #endif
 	    // Load Flag that tells us we timed out (first byte in bc_ctx)
 	    Value *Cond = Builder.CreateLoad(Flag, true);
@@ -969,7 +975,11 @@ class LLVMCodegen {
     Twine BytecodeID;
 
     TargetFolder Folder;
+#if LLVM_VERSION < 39
     IRBuilder<false, TargetFolder> Builder;
+#else
+    IRBuilder<TargetFolder> Builder;
+#endif
 
     std::vector<Value*> globals;
     DenseMap<unsigned, unsigned> GVoffsetMap;
diff --git a/libclamav/c++/m4/llvm-flags.m4 b/libclamav/c++/m4/llvm-flags.m4
index 345c7ae..9631d5d 100644
--- a/libclamav/c++/m4/llvm-flags.m4
+++ b/libclamav/c++/m4/llvm-flags.m4
@@ -98,14 +98,14 @@ elif test $llvmver_test -lt 290; then
 elif test $llvmver_test -lt 360; then
     llvmcomp="jit nativecodegen scalaropts ipo"
     AC_MSG_RESULT([ok ($llvmver)])
-elif test $llvmver_test -lt 390; then
+elif test $llvmver_test -lt 400; then
     dnl LLVM 3.6.0 removed jit, so we have to use mcjit
     dnl and we're using InitializeNativeTargetAsmParser, so we need the architecture specific parsers
     llvmcomp="mcjit nativecodegen scalaropts ipo x86asmparser powerpcasmparser"
     AC_MSG_RESULT([ok ($llvmver)])
 else
     AC_MSG_RESULT([no ($llvmver)])
-    AC_MSG_ERROR([LLVM < 3.9 required, but "$llvmver"($llvmver_test) found])
+    AC_MSG_ERROR([LLVM < 4.0 required, but "$llvmver"($llvmver_test) found])
 fi
 
 dnl aquire the required flags to properly link in external LLVM