Blob Blame History Raw
diff -up gambas3-3.7.1/gb.jit/configure.ac.llvm36 gambas3-3.7.1/gb.jit/configure.ac
--- gambas3-3.7.1/gb.jit/configure.ac.llvm36	2015-03-29 08:50:18.000000000 -0400
+++ gambas3-3.7.1/gb.jit/configure.ac	2015-04-15 12:32:25.274234421 -0400
@@ -8,8 +8,8 @@ GB_INIT(gb.jit)
 AC_PROG_LIBTOOL
 
 min_llvm_version=3.1
-max_llvm_version=3.5
-next_max_llvm_version=3.6
+max_llvm_version=3.6
+next_max_llvm_version=3.7
 
 dnl llvm-config file can be forced with LLVM_CONFIG env var
 if test "x$LLVM_CONFIG" = x; then
diff -up gambas3-3.7.1/gb.jit/src/jit_codegen.cpp.llvm36 gambas3-3.7.1/gb.jit/src/jit_codegen.cpp
--- gambas3-3.7.1/gb.jit/src/jit_codegen.cpp.llvm36	2015-04-17 15:02:57.281839985 -0400
+++ gambas3-3.7.1/gb.jit/src/jit_codegen.cpp	2015-04-17 15:18:23.868217606 -0400
@@ -984,7 +984,11 @@ static void unref_string_no_nullcheck(ll
 	llvm::Value* slt = builder->CreateICmpSLT(ref, getInteger(32, 1));
 	if (llvm::Instruction* inst = llvm::dyn_cast<llvm::Instruction>(slt)){
 		llvm::Value* arr[1] = {getInteger(32, 1)};
+#if (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
+		inst->setMetadata("unref_slt", llvm::MDNode::get(llvm_context, llvm::ArrayRef<Metadata*>(arr)));
+#else
 		inst->setMetadata("unref_slt", llvm::MDNode::get(llvm_context, arr));
+#endif
 	}
 	gen_if(slt, [&](){
 		llvm::Value* free_func = get_global_function_jif(STRING_free_real, 'v', "p");
@@ -1013,7 +1017,11 @@ static void unref_object_no_nullcheck(ll
 	llvm::Value* slt = builder->CreateICmpSLT(ref, getInteger(TARGET_BITS, 1));
 	if (llvm::Instruction* inst = llvm::dyn_cast<llvm::Instruction>(slt)){
 		llvm::Value* arr[1] = {getInteger(32, 1)};
+#if (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
+		inst->setMetadata("unref_slt", llvm::MDNode::get(llvm_context, llvm::ArrayRef<Metadata*>(arr)));
+#else
 		inst->setMetadata("unref_slt", llvm::MDNode::get(llvm_context, arr));
+#endif
 	}
 	gen_if(slt, [&](){
 		llvm::Value* free_func = get_global_function_jif(CLASS_free, 'v', "p");
@@ -3657,7 +3665,11 @@ void EndTryExpression::codegen(){
 		
 	if (llvm::Instruction* inst = llvm::dyn_cast<llvm::Instruction>(call)){
 		llvm::Value* arr[1] = {getInteger(32, 1)};
+#if (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
+		inst->setMetadata("end_try", llvm::MDNode::get(llvm_context, llvm::ArrayRef<Metadata*>(arr)));
+#else
 		inst->setMetadata("end_try", llvm::MDNode::get(llvm_context, arr));
+#endif
 	}
 		
 	builder->CreateStore(get_nullptr(), get_global((void*)&EP));
@@ -6472,7 +6484,11 @@ void ReturnExpression::codegen(){
 				
 				if (llvm::Instruction* inst = llvm::dyn_cast<llvm::Instruction>(call)){
 					llvm::Value* arr[1] = {getInteger(32, 1)};
+#if (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
+					inst->setMetadata("large_end_try", llvm::MDNode::get(llvm_context, llvm::ArrayRef<Metadata*>(arr)));
+#else
 					inst->setMetadata("large_end_try", llvm::MDNode::get(llvm_context, arr));
+#endif
 				}
 			}, "return_in_large_try");
 		}
@@ -6674,7 +6690,11 @@ static void func_extern_call_variant_var
 			M->setTargetTriple("i386-unknown-linux-gnu");
 			M->setDataLayout("e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128");
 		}
+#if (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
+		EE->addModule(std::unique_ptr<Module>(M));
+#else
 		EE->addModule(M);
+#endif
 		
 		static char buf[256] = "extern_func_caller_";
 		int eob = strlen("extern_func_caller_");
@@ -6873,9 +6893,17 @@ void JIT_codegen(){
 		M->setDataLayout("e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128");
 	}
 	if (EE)
+#if (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
+		EE->addModule(std::unique_ptr<Module>(M));
+#else
 		EE->addModule(M);
+#endif
 	else
+#if (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
+		EE = llvm::EngineBuilder(std::unique_ptr<Module>(M))/*.setOptLevel(llvm::CodeGenOpt::Aggressive)*/.create();
+#else
 		EE = llvm::EngineBuilder(M)/*.setOptLevel(llvm::CodeGenOpt::Aggressive)*/.create();
+#endif
 	
 	
 	static int counter = 0;
diff -up gambas3-3.7.1/gb.jit/src/jit.h.llvm36 gambas3-3.7.1/gb.jit/src/jit.h
--- gambas3-3.7.1/gb.jit/src/jit.h.llvm36	2015-04-15 12:58:54.040999418 -0400
+++ gambas3-3.7.1/gb.jit/src/jit.h	2015-04-15 13:01:48.902093066 -0400
@@ -52,7 +52,11 @@
 	#include "llvm/Support/CFG.h"
 #endif
 
-#include "llvm/ExecutionEngine/JIT.h"
+#if (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
+	#include "llvm/ExecutionEngine/MCJIT.h"
+#else
+	#include "llvm/ExecutionEngine/JIT.h"
+#endif
 #include "llvm/ExecutionEngine/Interpreter.h"
 #include "llvm/ExecutionEngine/GenericValue.h"
 #include "llvm/Support/TargetSelect.h"