spot pushed to gambas3 (master). "more llvm 3.6 fixes"

notifications at fedoraproject.org notifications at fedoraproject.org
Fri Apr 17 19:22:33 UTC 2015


>From 9f50817a11b80eb18d86f3701dfc51b4ad7bb89b Mon Sep 17 00:00:00 2001
From: Tom Callaway <spot at fedoraproject.org>
Date: Fri, 17 Apr 2015 15:22:07 -0400
Subject: more llvm 3.6 fixes


diff --git a/gambas3-3.7.1-llvm-3.6.patch b/gambas3-3.7.1-llvm-3.6.patch
index ff54dc9..cd70792 100644
--- a/gambas3-3.7.1-llvm-3.6.patch
+++ b/gambas3-3.7.1-llvm-3.6.patch
@@ -12,6 +12,87 @@ diff -up gambas3-3.7.1/gb.jit/configure.ac.llvm36 gambas3-3.7.1/gb.jit/configure
  
  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
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/gambas3.git/commit/?h=master&id=9f50817a11b80eb18d86f3701dfc51b4ad7bb89b


More information about the scm-commits mailing list