Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mono/mini/aot-compiler.c16
-rw-r--r--mono/mini/mini-llvm-cpp.cpp86
-rw-r--r--mono/mini/mini-llvm.c452
-rw-r--r--mono/mini/mini-trampolines.c4
-rwxr-xr-xscripts/ci/run-jenkins.sh3
-rw-r--r--sdks/builds/llvm.mk69
-rw-r--r--sdks/versions.mk6
7 files changed, 25 insertions, 611 deletions
diff --git a/mono/mini/aot-compiler.c b/mono/mini/aot-compiler.c
index 696dd7a722a..d6d49c5d95a 100644
--- a/mono/mini/aot-compiler.c
+++ b/mono/mini/aot-compiler.c
@@ -1125,9 +1125,7 @@ arch_init (MonoAotCompile *acfg)
if (acfg->aot_opts.mtriple && strstr (acfg->aot_opts.mtriple, "ios")) {
g_string_append (acfg->llc_args, " -mattr=+v7");
-#ifdef LLVM_API_VERSION > 100
g_string_append (acfg->llc_args, " -exception-model=dwarf");
-#endif
}
#if defined(ARM_FPU_VFP_HARD)
@@ -1137,11 +1135,7 @@ arch_init (MonoAotCompile *acfg)
g_string_append (acfg->llc_args, " -mattr=+vfp2,-neon,+d16");
g_string_append (acfg->as_args, " -mfpu=vfp3");
#else
-#ifdef LLVM_API_VERSION > 100
g_string_append (acfg->llc_args, " -mattr=+soft-float");
-#else
- g_string_append (acfg->llc_args, " -soft-float");
-#endif
#endif
}
if (acfg->aot_opts.mtriple && strstr (acfg->aot_opts.mtriple, "thumb"))
@@ -9663,11 +9657,7 @@ emit_llvm_file (MonoAotCompile *acfg)
// FIXME: This doesn't work yet
opts = g_strdup ("");
} else {
-#if LLVM_API_VERSION > 100
opts = g_strdup ("-O2 -disable-tail-calls -place-safepoints -spp-all-backedges");
-#else
- opts = g_strdup ("-targetlibinfo -no-aa -basicaa -notti -instcombine -simplifycfg -inline-cost -inline -sroa -domtree -early-cse -lazy-value-info -correlated-propagation -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -indvars -loop-idiom -loop-deletion -loop-unroll -memdep -gvn -memdep -memcpyopt -sccp -instcombine -lazy-value-info -correlated-propagation -domtree -memdep -adce -simplifycfg -instcombine -strip-dead-prototypes -domtree -verify -place-safepoints -spp-all-backedges");
-#endif
}
if (acfg->aot_opts.llvm_opts) {
@@ -9704,7 +9694,7 @@ emit_llvm_file (MonoAotCompile *acfg)
if (acfg->aot_opts.mtriple)
g_string_append_printf (acfg->llc_args, " -mtriple=%s", acfg->aot_opts.mtriple);
-#if defined(TARGET_X86_64_WIN32_MSVC) && LLVM_API_VERSION >= 600
+#if defined(TARGET_X86_64_WIN32_MSVC)
if (!acfg->aot_opts.mtriple)
g_string_append_printf (acfg->llc_args, " -mtriple=%s", "x86_64-pc-windows-msvc");
#endif
@@ -9713,11 +9703,9 @@ emit_llvm_file (MonoAotCompile *acfg)
g_string_append_printf (acfg->llc_args, " -mono-eh-frame-symbol=%s%s", acfg->user_symbol_prefix, acfg->llvm_eh_frame_symbol);
-#if LLVM_API_VERSION > 100
g_string_append_printf (acfg->llc_args, " -disable-tail-calls");
-#endif
-#if LLVM_API_VERSION > 500 && (defined(TARGET_AMD64) || defined(TARGET_X86))
+#if defined(TARGET_AMD64) || defined(TARGET_X86)
/* This generates stack adjustments in the middle of functions breaking unwind info */
g_string_append_printf (acfg->llc_args, " -no-x86-call-frame-opt");
#endif
diff --git a/mono/mini/mini-llvm-cpp.cpp b/mono/mini/mini-llvm-cpp.cpp
index 0b3065e306d..71987aece9a 100644
--- a/mono/mini/mini-llvm-cpp.cpp
+++ b/mono/mini/mini-llvm-cpp.cpp
@@ -42,12 +42,9 @@
using namespace llvm;
-#if LLVM_API_VERSION > 100
-// These are c++11 scoped enums in recent llvm versions
#define Acquire AtomicOrdering::Acquire
#define Release AtomicOrdering::Release
#define SequentiallyConsistent AtomicOrdering::SequentiallyConsistent
-#endif
void
mono_llvm_dump_value (LLVMValueRef value)
@@ -63,11 +60,7 @@ mono_llvm_build_alloca (LLVMBuilderRef builder, LLVMTypeRef Ty,
LLVMValueRef ArraySize,
int alignment, const char *Name)
{
-#if LLVM_API_VERSION >= 500
return wrap (unwrap (builder)->Insert (new AllocaInst (unwrap (Ty), 0, unwrap (ArraySize), alignment), Name));
-#else
- return wrap (unwrap (builder)->Insert (new AllocaInst (unwrap (Ty), unwrap (ArraySize), alignment), Name));
-#endif
}
LLVMValueRef
@@ -248,56 +241,45 @@ mono_llvm_set_preserveall_cc (LLVMValueRef func)
void
mono_llvm_set_call_preserveall_cc (LLVMValueRef wrapped_calli)
{
-#if LLVM_API_VERSION > 100
Instruction *calli = unwrap<Instruction> (wrapped_calli);
if (isa<CallInst> (calli))
dyn_cast<CallInst>(calli)->setCallingConv (CallingConv::PreserveAll);
else
dyn_cast<InvokeInst>(calli)->setCallingConv (CallingConv::PreserveAll);
-#else
- unwrap<CallInst>(wrapped_calli)->setCallingConv (CallingConv::PreserveAll);
-#endif
}
void
mono_llvm_set_call_nonnull_arg (LLVMValueRef wrapped_calli, int argNo)
{
-#if LLVM_API_VERSION > 100
Instruction *calli = unwrap<Instruction> (wrapped_calli);
if (isa<CallInst> (calli))
dyn_cast<CallInst>(calli)->addParamAttr (argNo, Attribute::NonNull);
else
dyn_cast<InvokeInst>(calli)->addParamAttr (argNo, Attribute::NonNull);
-#endif
}
void
mono_llvm_set_call_nonnull_ret (LLVMValueRef wrapped_calli)
{
-#if LLVM_API_VERSION > 100
Instruction *calli = unwrap<Instruction> (wrapped_calli);
if (isa<CallInst> (calli))
dyn_cast<CallInst>(calli)->addAttribute (AttributeList::ReturnIndex, Attribute::NonNull);
else
dyn_cast<InvokeInst>(calli)->addAttribute (AttributeList::ReturnIndex, Attribute::NonNull);
-#endif
}
void
mono_llvm_set_func_nonnull_arg (LLVMValueRef func, int argNo)
{
-#if LLVM_API_VERSION > 100
unwrap<Function>(func)->addParamAttr (argNo, Attribute::NonNull);
-#endif
}
gboolean
mono_llvm_is_nonnull (LLVMValueRef wrapped)
{
-#if LLVM_API_VERSION > 100
// Argument to function
Value *val = unwrap (wrapped);
@@ -323,8 +305,6 @@ mono_llvm_is_nonnull (LLVMValueRef wrapped)
return FALSE;
}
}
-
-#endif
return FALSE;
}
@@ -373,25 +353,20 @@ mono_llvm_call_args (LLVMValueRef wrapped_calli)
void
mono_llvm_set_call_notailcall (LLVMValueRef func)
{
-#if LLVM_API_VERSION > 100
unwrap<CallInst>(func)->setTailCallKind (CallInst::TailCallKind::TCK_NoTail);
-#endif
}
void
mono_llvm_set_call_noalias_ret (LLVMValueRef wrapped_calli)
{
-#if LLVM_API_VERSION > 100
Instruction *calli = unwrap<Instruction> (wrapped_calli);
if (isa<CallInst> (calli))
dyn_cast<CallInst>(calli)->addAttribute (AttributeList::ReturnIndex, Attribute::NoAlias);
else
dyn_cast<InvokeInst>(calli)->addAttribute (AttributeList::ReturnIndex, Attribute::NoAlias);
-#endif
}
-#if LLVM_API_VERSION > 500
static Attribute::AttrKind
convert_attr (AttrKind kind)
{
@@ -417,82 +392,27 @@ convert_attr (AttrKind kind)
return Attribute::NoUnwind;
}
}
-#else
-static LLVMAttribute
-convert_attr (AttrKind kind)
-{
- switch (kind) {
- case LLVM_ATTR_NO_UNWIND:
- return LLVMNoUnwindAttribute;
- case LLVM_ATTR_NO_INLINE:
- return LLVMNoInlineAttribute;
- case LLVM_ATTR_OPTIMIZE_FOR_SIZE:
- return LLVMOptimizeForSizeAttribute;
- case LLVM_ATTR_IN_REG:
- return LLVMInRegAttribute;
- case LLVM_ATTR_STRUCT_RET:
- return LLVMStructRetAttribute;
- case LLVM_ATTR_NO_ALIAS:
- return LLVMNoAliasAttribute;
- case LLVM_ATTR_BY_VAL:
- return LLVMByValAttribute;
- case LLVM_ATTR_UW_TABLE:
- return LLVMUWTable;
- default:
- assert (0);
- return LLVMNoUnwindAttribute;
- }
-}
-#endif
void
mono_llvm_add_func_attr (LLVMValueRef func, AttrKind kind)
{
-#if LLVM_API_VERSION > 391
unwrap<Function> (func)->addAttribute (AttributeList::FunctionIndex, convert_attr (kind));
-#else
- Function *Func = unwrap<Function>(func);
- const AttributeSet PAL = Func->getAttributes();
- AttrBuilder B(convert_attr (kind));
- const AttributeSet PALnew =
- PAL.addAttributes(Func->getContext(), AttributeSet::FunctionIndex,
- AttributeSet::get(Func->getContext(),
- AttributeSet::FunctionIndex, B));
- Func->setAttributes(PALnew);
-#endif
}
void
mono_llvm_add_param_attr (LLVMValueRef param, AttrKind kind)
{
-#if LLVM_API_VERSION > 391
Function *func = unwrap<Argument> (param)->getParent ();
int n = unwrap<Argument> (param)->getArgNo ();
func->addParamAttr (n, convert_attr (kind));
-#else
- Argument *A = unwrap<Argument>(param);
- AttrBuilder B(convert_attr (kind));
- A->addAttr(AttributeSet::get(A->getContext(), A->getArgNo() + 1, B));
-#endif
}
void
mono_llvm_add_instr_attr (LLVMValueRef val, int index, AttrKind kind)
{
-#if LLVM_API_VERSION > 391
CallSite (unwrap<Instruction> (val)).addAttribute (index, convert_attr (kind));
-#else
- CallSite Call = CallSite(unwrap<Instruction>(val));
- AttrBuilder B(convert_attr (kind));
- Call.setAttributes(
- Call.getAttributes().addAttributes(Call->getContext(), index,
- AttributeSet::get(Call->getContext(),
- index, B)));
-#endif
}
-#if LLVM_API_VERSION > 100
-
void*
mono_llvm_create_di_builder (LLVMModuleRef module)
{
@@ -504,14 +424,10 @@ mono_llvm_di_create_compile_unit (void *di_builder, const char *cu_name, const c
{
DIBuilder *builder = (DIBuilder*)di_builder;
-#if LLVM_API_VERSION >= 500
DIFile *di_file;
di_file = builder->createFile (cu_name, dir);
return builder->createCompileUnit (dwarf::DW_LANG_C99, di_file, producer, true, "", 0);
-#else
- return builder->createCompileUnit (dwarf::DW_LANG_C99, cu_name, dir, producer, true, "", 0);
-#endif
}
void*
@@ -560,8 +476,6 @@ mono_llvm_di_builder_finalize (void *di_builder)
builder->finalize ();
}
-#endif /* #if LLVM_API_VERSION > 100 */
-
LLVMValueRef
mono_llvm_get_or_insert_gc_safepoint_poll (LLVMModuleRef module)
{
diff --git a/mono/mini/mini-llvm.c b/mono/mini/mini-llvm.c
index e11ecfb737e..b676ccacf87 100644
--- a/mono/mini/mini-llvm.c
+++ b/mono/mini/mini-llvm.c
@@ -47,7 +47,7 @@
#define TARGET_WIN32_MSVC
#endif
-#if LLVM_API_VERSION < 4
+#if LLVM_API_VERSION < 610
#error "The version of the mono llvm repository is too old."
#endif
@@ -2004,16 +2004,11 @@ get_jit_callee (EmitContext *ctx, const char *name, LLVMTypeRef llvm_sig, MonoJu
target = resolve_patch (ctx->cfg, type, data);
}
-#if LLVM_API_VERSION > 100
LLVMValueRef tramp_var = LLVMAddGlobal (ctx->lmodule, LLVMPointerType (llvm_sig, 0), name);
LLVMSetInitializer (tramp_var, LLVMConstIntToPtr (LLVMConstInt (LLVMInt64Type (), (guint64)(size_t)target, FALSE), LLVMPointerType (llvm_sig, 0)));
LLVMSetLinkage (tramp_var, LLVMExternalLinkage);
LLVMValueRef callee = LLVMBuildLoad (ctx->builder, tramp_var, "");
return callee;
-#else
- g_assert_not_reached ();
- return NULL;
-#endif
}
static int
@@ -2185,12 +2180,8 @@ emit_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, LL
static LLVMValueRef
emit_load (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, int size, LLVMValueRef addr, LLVMValueRef base, const char *name, gboolean is_faulting, BarrierKind barrier)
{
- const char *intrins_name;
- LLVMValueRef args [16], res;
- LLVMTypeRef addr_type;
- gboolean use_intrinsics = TRUE;
+ LLVMValueRef res;
-#if LLVM_API_VERSION > 100
if (is_faulting && bb->region != -1 && !ctx->cfg->llvm_only) {
/* The llvm.mono.load/store intrinsics are not supported by this llvm version, emit an explicit null check instead */
LLVMValueRef cmp;
@@ -2198,159 +2189,41 @@ emit_load (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, in
cmp = LLVMBuildICmp (*builder_ref, LLVMIntEQ, base, LLVMConstNull (LLVMTypeOf (base)), "");
emit_cond_system_exception (ctx, bb, "NullReferenceException", cmp);
*builder_ref = ctx->builder;
- use_intrinsics = FALSE;
}
-#endif
-
- if (is_faulting && bb->region != -1 && !ctx->cfg->llvm_only && use_intrinsics) {
- LLVMAtomicOrdering ordering;
-
- switch (barrier) {
- case LLVM_BARRIER_NONE:
- ordering = LLVMAtomicOrderingNotAtomic;
- break;
- case LLVM_BARRIER_ACQ:
- ordering = LLVMAtomicOrderingAcquire;
- break;
- case LLVM_BARRIER_SEQ:
- ordering = LLVMAtomicOrderingSequentiallyConsistent;
- break;
- default:
- g_assert_not_reached ();
- break;
- }
- /*
- * We handle loads which can fault by calling a mono specific intrinsic
- * using an invoke, so they are handled properly inside try blocks.
- * We can't use this outside clauses, since LLVM optimizes intrinsics which
- * are marked with IntrReadArgMem.
- */
- switch (size) {
- case 1:
- intrins_name = "llvm.mono.load.i8.p0i8";
- break;
- case 2:
- intrins_name = "llvm.mono.load.i16.p0i16";
- break;
- case 4:
- intrins_name = "llvm.mono.load.i32.p0i32";
- break;
- case 8:
- intrins_name = "llvm.mono.load.i64.p0i64";
- break;
- default:
- g_assert_not_reached ();
- }
-
- addr_type = LLVMTypeOf (addr);
- if (addr_type == LLVMPointerType (LLVMDoubleType (), 0) || addr_type == LLVMPointerType (LLVMFloatType (), 0))
- addr = LLVMBuildBitCast (*builder_ref, addr, LLVMPointerType (LLVMIntType (size * 8), 0), "");
-
- args [0] = addr;
- args [1] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
- args [2] = LLVMConstInt (LLVMInt1Type (), TRUE, FALSE);
- args [3] = LLVMConstInt (LLVMInt32Type (), ordering, FALSE);
- res = emit_call (ctx, bb, builder_ref, get_intrins_by_name (ctx, intrins_name), args, 4);
-
- if (addr_type == LLVMPointerType (LLVMDoubleType (), 0))
- res = LLVMBuildBitCast (*builder_ref, res, LLVMDoubleType (), "");
- else if (addr_type == LLVMPointerType (LLVMFloatType (), 0))
- res = LLVMBuildBitCast (*builder_ref, res, LLVMFloatType (), "");
-
- return res;
- } else {
- LLVMValueRef res;
-
- /*
- * We emit volatile loads for loads which can fault, because otherwise
- * LLVM will generate invalid code when encountering a load from a
- * NULL address.
- */
- if (barrier != LLVM_BARRIER_NONE)
- res = mono_llvm_build_atomic_load (*builder_ref, addr, name, is_faulting, size, barrier);
- else
- res = mono_llvm_build_load (*builder_ref, addr, name, is_faulting);
+ /*
+ * We emit volatile loads for loads which can fault, because otherwise
+ * LLVM will generate invalid code when encountering a load from a
+ * NULL address.
+ */
+ if (barrier != LLVM_BARRIER_NONE)
+ res = mono_llvm_build_atomic_load (*builder_ref, addr, name, is_faulting, size, barrier);
+ else
+ res = mono_llvm_build_load (*builder_ref, addr, name, is_faulting);
- /* Mark it with a custom metadata */
- /*
- if (is_faulting)
- set_metadata_flag (res, "mono.faulting.load");
- */
+ /* Mark it with a custom metadata */
+ /*
+ if (is_faulting)
+ set_metadata_flag (res, "mono.faulting.load");
+ */
- return res;
- }
+ return res;
}
static void
emit_store_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, int size, LLVMValueRef value, LLVMValueRef addr, LLVMValueRef base, gboolean is_faulting, BarrierKind barrier)
{
- const char *intrins_name;
- LLVMValueRef args [16];
- gboolean use_intrinsics = TRUE;
-
-#if LLVM_API_VERSION > 100
if (is_faulting && bb->region != -1 && !ctx->cfg->llvm_only) {
/* The llvm.mono.load/store intrinsics are not supported by this llvm version, emit an explicit null check instead */
LLVMValueRef cmp = LLVMBuildICmp (*builder_ref, LLVMIntEQ, base, LLVMConstNull (LLVMTypeOf (base)), "");
emit_cond_system_exception (ctx, bb, "NullReferenceException", cmp);
*builder_ref = ctx->builder;
- use_intrinsics = FALSE;
}
-#endif
-
- if (is_faulting && bb->region != -1 && !ctx->cfg->llvm_only && use_intrinsics) {
- LLVMAtomicOrdering ordering;
-
- switch (barrier) {
- case LLVM_BARRIER_NONE:
- ordering = LLVMAtomicOrderingNotAtomic;
- break;
- case LLVM_BARRIER_REL:
- ordering = LLVMAtomicOrderingRelease;
- break;
- case LLVM_BARRIER_SEQ:
- ordering = LLVMAtomicOrderingSequentiallyConsistent;
- break;
- default:
- g_assert_not_reached ();
- break;
- }
- switch (size) {
- case 1:
- intrins_name = "llvm.mono.store.i8.p0i8";
- break;
- case 2:
- intrins_name = "llvm.mono.store.i16.p0i16";
- break;
- case 4:
- intrins_name = "llvm.mono.store.i32.p0i32";
- break;
- case 8:
- intrins_name = "llvm.mono.store.i64.p0i64";
- break;
- default:
- g_assert_not_reached ();
- }
-
- if (LLVMTypeOf (value) == LLVMDoubleType () || LLVMTypeOf (value) == LLVMFloatType ()) {
- value = LLVMBuildBitCast (*builder_ref, value, LLVMIntType (size * 8), "");
- addr = LLVMBuildBitCast (*builder_ref, addr, LLVMPointerType (LLVMIntType (size * 8), 0), "");
- }
-
- args [0] = value;
- args [1] = addr;
- args [2] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
- args [3] = LLVMConstInt (LLVMInt1Type (), TRUE, FALSE);
- args [4] = LLVMConstInt (LLVMInt32Type (), ordering, FALSE);
- emit_call (ctx, bb, builder_ref, get_intrins_by_name (ctx, intrins_name), args, 5);
- } else {
- if (barrier != LLVM_BARRIER_NONE)
- mono_llvm_build_aligned_store (*builder_ref, value, addr, barrier, size);
- else
- mono_llvm_build_store (*builder_ref, value, addr, is_faulting, barrier);
- }
+ if (barrier != LLVM_BARRIER_NONE)
+ mono_llvm_build_aligned_store (*builder_ref, value, addr, barrier, size);
+ else
+ mono_llvm_build_store (*builder_ref, value, addr, is_faulting, barrier);
}
static void
@@ -2452,7 +2325,6 @@ emit_cond_system_exception (EmitContext *ctx, MonoBasicBlock *bb, const char *ex
*/
callee = get_jit_callee (ctx, "llvm_throw_corlib_exception_trampoline", sig, MONO_PATCH_INFO_JIT_ICALL_ID, GUINT_TO_POINTER (icall_id));
-#if LLVM_API_VERSION > 100
/*
* Make sure that ex_bb starts with the invoke, so the block address points to it, and not to the load
* added by get_jit_callee ().
@@ -2463,10 +2335,6 @@ emit_cond_system_exception (EmitContext *ctx, MonoBasicBlock *bb, const char *ex
ctx->builder = builder = create_builder (ctx);
LLVMPositionBuilderAtEnd (ctx->builder, ex2_bb);
-#else
- mono_memory_barrier ();
- ctx->module->throw_corlib_exception = callee;
-#endif
}
}
@@ -3819,7 +3687,6 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
name = g_strdup_printf ("tramp_%d", tramp_index);
tramp_index ++;
-#if LLVM_API_VERSION > 100
/*
* Use our trampoline infrastructure for lazy compilation instead of llvm's.
* Make all calls through a global. The address of the global will be saved in
@@ -3843,9 +3710,6 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
g_hash_table_insert (ctx->jit_callees, call->method, tramp_var);
}
callee = LLVMBuildLoad (builder, tramp_var, "");
-#else
- g_assert_not_reached ();
-#endif
}
}
@@ -3886,7 +3750,6 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
return;
}
} else {
-#if LLVM_API_VERSION > 100
if (cfg->abs_patches) {
MonoJumpInfo *abs_ji = (MonoJumpInfo*)g_hash_table_lookup (cfg->abs_patches, call->fptr);
if (abs_ji) {
@@ -3901,9 +3764,6 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
} else {
g_assert_not_reached ();
}
-#else
- g_assert_not_reached ();
-#endif
}
}
}
@@ -4236,9 +4096,6 @@ emit_throw (EmitContext *ctx, MonoBasicBlock *bb, gboolean rethrow, LLVMValueRef
}
mono_memory_barrier ();
-#if LLVM_API_VERSION < 100
- *pcallee = callee;
-#endif
}
LLVMValueRef arg;
arg = convert (ctx, exc, type_to_llvm_type (ctx, m_class_get_byval_arg (mono_get_object_class ())));
@@ -4538,7 +4395,6 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
personality = LLVMGetNamedFunction (lmodule, "mono_personality");
g_assert (personality);
} else {
-#if LLVM_API_VERSION > 100
/* Can't cache this as each method is in its own llvm module */
LLVMTypeRef personality_type = LLVMFunctionType (LLVMInt32Type (), NULL, 0, TRUE);
personality = LLVMAddFunction (ctx->lmodule, "mono_personality", personality_type);
@@ -4548,9 +4404,6 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
LLVMPositionBuilderAtEnd (builder2, entry_bb);
LLVMBuildRet (builder2, LLVMConstInt (LLVMInt32Type (), 0, FALSE));
LLVMDisposeBuilder (builder2);
-#else
- g_assert_not_reached ();
-#endif
}
i8ptr = LLVMPointerType (LLVMInt8Type (), 0);
@@ -4573,12 +4426,8 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
*/
LLVMSetLinkage (type_info, LLVMInternalLinkage);
} else {
-#if LLVM_API_VERSION > 100
type_info = LLVMAddGlobal (lmodule, LLVMInt32Type (), ti_name);
LLVMSetInitializer (type_info, LLVMConstInt (LLVMInt32Type (), clause_index, FALSE));
-#else
- g_assert_not_reached ();
-#endif
}
{
@@ -5752,9 +5601,6 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
* they can't fail, allowing them to be hoisted out of loops.
*/
set_invariant_load_flag (values [ins->dreg]);
-#if LLVM_API_VERSION < 100
- set_metadata_flag (values [ins->dreg], "mono.nofail.load");
-#endif
}
if (sext)
@@ -6139,7 +5985,6 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
case OP_ATOMIC_LOAD_U8:
case OP_ATOMIC_LOAD_R4:
case OP_ATOMIC_LOAD_R8: {
-#if LLVM_API_VERSION > 100
int size;
gboolean sext, zext;
LLVMTypeRef t;
@@ -6170,10 +6015,6 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
else if (zext)
values [ins->dreg] = LLVMBuildZExt (builder, values [ins->dreg], LLVMInt32Type (), dname);
break;
-#else
- set_failure (ctx, "atomic mono.load intrinsic");
- break;
-#endif
}
case OP_ATOMIC_STORE_I1:
case OP_ATOMIC_STORE_I2:
@@ -6192,13 +6033,6 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
BarrierKind barrier = (BarrierKind) ins->backend.memory_barrier_kind;
LLVMValueRef index, addr, value, base;
-#if LLVM_API_VERSION < 100
- if (!cfg->llvm_only) {
- set_failure (ctx, "atomic mono.store intrinsic");
- break;
- }
-#endif
-
if (!values [ins->inst_destbasereg]) {
set_failure (ctx, "inst_destbasereg");
break;
@@ -6692,7 +6526,6 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
ones [i] = LLVMConstInt (ext_elem_type, 1, FALSE);
ones_vec = LLVMConstVector (ones, vector_size);
-#if LLVM_API_VERSION >= 500
LLVMValueRef val;
LLVMTypeRef ext_type = LLVMVectorType (ext_elem_type, vector_size);
@@ -6702,14 +6535,6 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
val = LLVMBuildAdd (builder, val, ones_vec, "");
val = LLVMBuildLShr (builder, val, ones_vec, "");
values [ins->dreg] = LLVMBuildTrunc (builder, val, LLVMTypeOf (lhs), "");
-#else
- LLVMValueRef args [2];
-
- args [0] = lhs;
- args [1] = rhs;
-
- values [ins->dreg] = LLVMBuildCall (builder, get_intrins_by_name (ctx, simd_op_to_intrins (ins->opcode)), args, 2, dname);
-#endif
break;
}
case OP_PCMPEQB:
@@ -6817,7 +6642,6 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
values [ins->dreg] = LLVMBuildInsertElement (builder, values [ins->sreg1], convert (ctx, values [ins->sreg2], LLVMDoubleType ()), LLVMConstInt (LLVMInt32Type (), ins->inst_c0, FALSE), dname);
break;
-#if LLVM_API_VERSION > 100
case OP_CVTDQ2PD: {
LLVMValueRef indexes [16];
@@ -6841,13 +6665,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
case OP_CVTTPS2DQ:
values [ins->dreg] = LLVMBuildFPToSI (builder, lhs, LLVMVectorType (LLVMInt32Type (), 4), dname);
break;
-#endif
-#if LLVM_API_VERSION <= 100
- case OP_CVTDQ2PD:
- case OP_CVTPS2PD:
- case OP_CVTTPS2DQ:
-#endif
case OP_CVTDQ2PS:
case OP_CVTPD2DQ:
case OP_CVTPS2DQ:
@@ -7135,11 +6953,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
args [0] = lhs;
args [1] = rhs;
/* 0xf1 == multiply all 4 elements, add them together, and store the result to the lowest element */
-#if LLVM_API_VERSION >= 500
args [2] = LLVMConstInt (LLVMInt8Type (), 0xf1, FALSE);
-#else
- args [2] = LLVMConstInt (LLVMInt32Type (), 0xf1, FALSE);
-#endif
values [ins->dreg] = LLVMBuildCall (builder, get_intrins_by_name (ctx, simd_op_to_intrins (ins->opcode)), args, 3, dname);
break;
@@ -7266,12 +7080,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
if (ctx->cfg->compile_aot) {
callee = get_callee (ctx, icall_sig, MONO_PATCH_INFO_JIT_ICALL_ID, GUINT_TO_POINTER (MONO_JIT_ICALL_mono_llvm_resume_unwind_trampoline));
} else {
-#if LLVM_API_VERSION > 100
callee = get_jit_callee (ctx, "llvm_resume_unwind_trampoline", icall_sig, MONO_PATCH_INFO_JIT_ICALL_ID, GUINT_TO_POINTER (MONO_JIT_ICALL_mono_llvm_resume_unwind_trampoline));
-#else
- g_assert_not_reached ();
- callee = NULL;
-#endif
}
LLVMBuildCall (builder, callee, NULL, 0, "");
LLVMBuildUnreachable (builder);
@@ -7550,14 +7359,10 @@ mono_llvm_emit_method (MonoCompile *cfg)
}
ctx->method_name = method_name;
-#if LLVM_API_VERSION > 100
if (cfg->compile_aot)
ctx->lmodule = ctx->module->lmodule;
else
ctx->lmodule = LLVMModuleCreateWithName (g_strdup_printf ("jit-module-%s", cfg->method->name));
-#else
- ctx->lmodule = ctx->module->lmodule;
-#endif
ctx->llvm_only = ctx->module->llvm_only;
#ifdef TARGET_WASM
ctx->emit_dummy_arg = TRUE;
@@ -8158,11 +7963,8 @@ after_codegen:
}
//LLVMDumpValue (ctx->lmethod);
-#if LLVM_API_VERSION < 100
- /* VerifyFunction can't handle some of the debug info created by DIBuilder in llvm 3.9 */
- int err = LLVMVerifyFunction(ctx->lmethod, LLVMPrintMessageAction);
- g_assert (err == 0);
-#endif
+ //int err = LLVMVerifyFunction(ctx->lmethod, LLVMPrintMessageAction);
+ //g_assert (err == 0);
} else {
//LLVMVerifyFunction (method, 0);
llvm_jit_finalize_method (ctx);
@@ -8658,11 +8460,7 @@ add_intrinsic (LLVMModuleRef module, int id)
ret_type = type_to_simd_type (MONO_TYPE_R4);
arg_types [0] = type_to_simd_type (MONO_TYPE_R4);
arg_types [1] = type_to_simd_type (MONO_TYPE_R4);
-#if LLVM_API_VERSION >= 500
arg_types [2] = LLVMInt8Type ();
-#else
- arg_types [2] = LLVMInt32Type ();
-#endif
AddFunc (module, name, ret_type, arg_types, 3);
break;
case INTRINS_SSE_ROUNDPD:
@@ -8684,7 +8482,6 @@ get_intrins (EmitContext *ctx, int id)
const char *name = (const char*)g_hash_table_lookup (intrins_id_to_name, GINT_TO_POINTER (id));
g_assert (name);
-#if LLVM_API_VERSION > 100
LLVMValueRef res;
/*
@@ -8702,19 +8499,11 @@ get_intrins (EmitContext *ctx, int id)
ctx->module->intrins_by_id [id] = res;
}
return res;
-#else
- LLVMValueRef res;
-
- res = LLVMGetNamedFunction (ctx->lmodule, name);
- g_assert (res);
- return res;
-#endif
}
static LLVMValueRef
get_intrins_by_name (EmitContext *ctx, const char *name)
{
-#if LLVM_API_VERSION > 100
LLVMValueRef res;
/*
@@ -8737,13 +8526,6 @@ get_intrins_by_name (EmitContext *ctx, const char *name)
}
return res;
-#else
- LLVMValueRef res;
-
- res = LLVMGetNamedFunction (ctx->lmodule, name);
- g_assert (res);
- return res;
-#endif
}
static void
@@ -8910,7 +8692,6 @@ mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix,
LLVMSetTarget (module->lmodule, MONO_ARCH_LLVM_TARGET_TRIPLE);
#endif
-#if LLVM_API_VERSION > 100
if (module->emit_dwarf) {
char *dir, *build_info, *s, *cu_name;
@@ -8926,7 +8707,6 @@ mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix,
g_free (build_info);
g_free (s);
}
-#endif
#ifdef TARGET_WIN32_MSVC
if (emit_codeview) {
@@ -8945,7 +8725,6 @@ mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix,
"/DEFAULTLIB:ucrt.lib",
"/DEFAULTLIB:vcruntime.lib" };
- LLVMValueRef linker_option_args[3];
LLVMValueRef default_lib_args[G_N_ELEMENTS (default_dynamic_lib_names)];
LLVMValueRef default_lib_nodes[G_N_ELEMENTS(default_dynamic_lib_names)];
@@ -8956,15 +8735,7 @@ mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix,
default_lib_nodes[i] = LLVMMDNode (default_lib_args + i, 1);
}
-#if LLVM_API_VERSION < 600
- linker_option_args[0] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
- linker_option_args[1] = LLVMMDString (linker_options, G_N_ELEMENTS (linker_options) - 1);
- linker_option_args[2] = LLVMMDNode (default_lib_nodes, G_N_ELEMENTS (default_lib_nodes));
-
- LLVMAddNamedMetadataOperand (module->lmodule, "llvm.module.flags", LLVMMDNode (linker_option_args, G_N_ELEMENTS (linker_option_args)));
-#else
LLVMAddNamedMetadataOperand (module->lmodule, "llvm.linker.options", LLVMMDNode (default_lib_args, G_N_ELEMENTS (default_lib_args)));
-#endif
}
#endif
@@ -9100,13 +8871,11 @@ mono_llvm_fixup_aot_module (void)
/* Nullify the call to init_method () if possible */
g_assert (cfg->got_access_count);
cfg->got_access_count --;
-#if LLVM_API_VERSION >= 600
if (cfg->got_access_count == 0) {
LLVMValueRef br = (LLVMValueRef)cfg->llvmonly_init_cond;
if (br)
LLVMSetSuccessor (br, 0, LLVMGetSuccessor (br, 1));
}
-#endif
}
}
}
@@ -9403,7 +9172,6 @@ typedef struct {
static void
mono_llvm_nonnull_state_update (EmitContext *ctx, LLVMValueRef lcall, MonoMethod *call_method, LLVMValueRef *args, int num_params)
{
-#if LLVM_API_VERSION > 100
if (!ctx->module->llvm_disable_self_init && mono_aot_can_specialize (call_method)) {
int num_passed = LLVMGetNumArgOperands (lcall);
g_assert (num_params <= num_passed);
@@ -9430,13 +9198,11 @@ mono_llvm_nonnull_state_update (EmitContext *ctx, LLVMValueRef lcall, MonoMethod
g_hash_table_insert (ctx->module->method_to_call_info, call_method, call_site_union);
}
-#endif
}
static void
mono_llvm_propagate_nonnull_final (GHashTable *all_specializable, MonoLLVMModule *module)
{
-#if LLVM_API_VERSION > 100
// When we first traverse the mini IL, we mark the things that are
// nonnull (the roots). Then, for all of the methods that can be specialized, we
// see if their call sites have nonnull attributes.
@@ -9553,7 +9319,6 @@ mono_llvm_propagate_nonnull_final (GHashTable *all_specializable, MonoLLVMModule
g_free (current);
}
-#endif
}
/*
@@ -9694,70 +9459,8 @@ emit_dbg_info (MonoLLVMModule *module, const char *filename, const char *cu_name
if (!module->emit_dwarf)
return;
-#if LLVM_API_VERSION > 100
mono_llvm_di_builder_finalize (module->di_builder);
-#else
- LLVMValueRef cu_args [16], cu;
- int n_cuargs;
- char *build_info, *s, *dir;
-
- /*
- * Emit dwarf info in the form of LLVM metadata. There is some
- * out-of-date documentation at:
- * http://llvm.org/docs/SourceLevelDebugging.html
- * but most of this was gathered from the llvm and
- * clang sources.
- */
-
- n_cuargs = 0;
- cu_args [n_cuargs ++] = LLVMConstInt (LLVMInt32Type (), DW_TAG_compile_unit, FALSE);
- /* CU name/compilation dir */
- dir = g_path_get_dirname (filename);
- args [0] = LLVMMDString (cu_name, strlen (cu_name));
- args [1] = LLVMMDString (dir, strlen (dir));
- cu_args [n_cuargs ++] = LLVMMDNode (args, 2);
- g_free (dir);
- /* Language */
- cu_args [n_cuargs ++] = LLVMConstInt (LLVMInt32Type (), DW_LANG_C99, FALSE);
- /* Producer */
- build_info = mono_get_runtime_build_info ();
- s = g_strdup_printf ("Mono AOT Compiler %s (LLVM)", build_info);
- cu_args [n_cuargs ++] = LLVMMDString (s, strlen (s));
- g_free (build_info);
- /* Optimized */
- cu_args [n_cuargs ++] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
- /* Flags */
- cu_args [n_cuargs ++] = LLVMMDString ("", strlen (""));
- /* Runtime version */
- cu_args [n_cuargs ++] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
- /* Enums */
- cu_args [n_cuargs ++] = LLVMMDNode (args, 0);
- cu_args [n_cuargs ++] = LLVMMDNode (args, 0);
- /* Subprograms */
- if (module->subprogram_mds) {
- LLVMValueRef *mds;
- int i;
-
- mds = g_new0 (LLVMValueRef, module->subprogram_mds->len);
- for (i = 0; i < module->subprogram_mds->len; ++i)
- mds [i] = (LLVMValueRef)g_ptr_array_index (module->subprogram_mds, i);
- cu_args [n_cuargs ++] = LLVMMDNode (mds, module->subprogram_mds->len);
- } else {
- cu_args [n_cuargs ++] = LLVMMDNode (args, 0);
- }
- /* GVs */
- cu_args [n_cuargs ++] = LLVMMDNode (args, 0);
- /* Imported modules */
- cu_args [n_cuargs ++] = LLVMMDNode (args, 0);
- /* SplitName */
- cu_args [n_cuargs ++] = LLVMMDString ("", strlen (""));
- /* DebugEmissionKind = FullDebug */
- cu_args [n_cuargs ++] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
- cu = LLVMMDNode (cu_args, n_cuargs);
- LLVMAddNamedMetadataOperand (lmodule, "llvm.dbg.cu", cu);
-#endif
-#if LLVM_API_VERSION > 100
args [0] = LLVMConstInt (LLVMInt32Type (), 2, FALSE);
args [1] = LLVMMDString ("Dwarf Version", strlen ("Dwarf Version"));
args [2] = LLVMConstInt (LLVMInt32Type (), 2, FALSE);
@@ -9769,19 +9472,6 @@ emit_dbg_info (MonoLLVMModule *module, const char *filename, const char *cu_name
args [2] = LLVMConstInt (LLVMInt64Type (), 3, FALSE);
ver = LLVMMDNode (args, 3);
LLVMAddNamedMetadataOperand (lmodule, "llvm.module.flags", ver);
-#else
- args [0] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
- args [1] = LLVMMDString ("Dwarf Version", strlen ("Dwarf Version"));
- args [2] = LLVMConstInt (LLVMInt32Type (), 2, FALSE);
- ver = LLVMMDNode (args, 3);
- LLVMAddNamedMetadataOperand (lmodule, "llvm.module.flags", ver);
-
- args [0] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
- args [1] = LLVMMDString ("Debug Info Version", strlen ("Debug Info Version"));
- args [2] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
- ver = LLVMMDNode (args, 3);
- LLVMAddNamedMetadataOperand (lmodule, "llvm.module.flags", ver);
-#endif
}
static LLVMValueRef
@@ -9790,7 +9480,6 @@ emit_dbg_subprogram (EmitContext *ctx, MonoCompile *cfg, LLVMValueRef method, co
MonoLLVMModule *module = ctx->module;
MonoDebugMethodInfo *minfo = ctx->minfo;
char *source_file, *dir, *filename;
- LLVMValueRef md, args [16], ctx_args [16], md_args [64], type_args [16], ctx_md, type_md;
MonoSymSeqPoint *sym_seq_points;
int n_seq_points;
@@ -9803,85 +9492,7 @@ emit_dbg_subprogram (EmitContext *ctx, MonoCompile *cfg, LLVMValueRef method, co
dir = g_path_get_dirname (source_file);
filename = g_path_get_basename (source_file);
-#if LLVM_API_VERSION > 100
return (LLVMValueRef)mono_llvm_di_create_function (module->di_builder, module->cu, method, cfg->method->name, name, dir, filename, n_seq_points ? sym_seq_points [0].line : 1);
-#endif
-
- ctx_args [0] = LLVMConstInt (LLVMInt32Type (), 0x29, FALSE);
- args [0] = md_string (filename);
- args [1] = md_string (dir);
- ctx_args [1] = LLVMMDNode (args, 2);
- ctx_md = LLVMMDNode (ctx_args, 2);
-
- type_args [0] = LLVMConstInt (LLVMInt32Type (), DW_TAG_subroutine_type, FALSE);
- type_args [1] = NULL;
- type_args [2] = NULL;
- type_args [3] = LLVMMDString ("", 0);
- type_args [4] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
- type_args [5] = LLVMConstInt (LLVMInt64Type (), 0, FALSE);
- type_args [6] = LLVMConstInt (LLVMInt64Type (), 0, FALSE);
- type_args [7] = LLVMConstInt (LLVMInt64Type (), 0, FALSE);
- type_args [8] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
- type_args [9] = NULL;
- type_args [10] = NULL;
- type_args [11] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
- type_args [12] = NULL;
- type_args [13] = NULL;
- type_args [14] = NULL;
- type_md = LLVMMDNode (type_args, 14);
-
- /* http://llvm.org/docs/SourceLevelDebugging.html#subprogram-descriptors */
- md_args [0] = LLVMConstInt (LLVMInt32Type (), DW_TAG_subprogram, FALSE);
- /* Source directory + file pair */
- args [0] = md_string (filename);
- args [1] = md_string (dir);
- md_args [1] = LLVMMDNode (args ,2);
- md_args [2] = ctx_md;
- md_args [3] = md_string (cfg->method->name);
- md_args [4] = md_string (name);
- md_args [5] = md_string (name);
- /* Line number */
- if (n_seq_points)
- md_args [6] = LLVMConstInt (LLVMInt32Type (), sym_seq_points [0].line, FALSE);
- else
- md_args [6] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
- /* Type */
- md_args [7] = type_md;
- /* static */
- md_args [8] = LLVMConstInt (LLVMInt1Type (), 0, FALSE);
- /* not extern */
- md_args [9] = LLVMConstInt (LLVMInt1Type (), 1, FALSE);
- /* Virtuality */
- md_args [10] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
- /* Index into a virtual function */
- md_args [11] = NULL;
- md_args [12] = NULL;
- /* Flags */
- md_args [13] = LLVMConstInt (LLVMInt1Type (), 0, FALSE);
- /* isOptimized */
- md_args [14] = LLVMConstInt (LLVMInt1Type (), 1, FALSE);
- /* Pointer to LLVM function */
- md_args [15] = method;
- /* Function template parameter */
- md_args [16] = NULL;
- /* Function declaration descriptor */
- md_args [17] = NULL;
- /* List of function variables */
- md_args [18] = LLVMMDNode (args, 0);
- /* Line number */
- md_args [19] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
- md = LLVMMDNode (md_args, 20);
-
- if (!module->subprogram_mds)
- module->subprogram_mds = g_ptr_array_new ();
- g_ptr_array_add (module->subprogram_mds, md);
-
- g_free (dir);
- g_free (filename);
- g_free (source_file);
- g_free (sym_seq_points);
-
- return md;
}
static void
@@ -9896,21 +9507,8 @@ emit_dbg_loc (EmitContext *ctx, LLVMBuilderRef builder, const unsigned char *cil
loc = mono_debug_method_lookup_location (ctx->minfo, cil_code - cfg->header->code);
if (loc) {
-#if LLVM_API_VERSION > 100
loc_md = (LLVMValueRef)mono_llvm_di_create_location (ctx->module->di_builder, ctx->dbg_md, loc->row, loc->column);
mono_llvm_di_set_location (builder, loc_md);
-#else
- LLVMValueRef md_args [16];
- int nmd_args;
-
- nmd_args = 0;
- md_args [nmd_args ++] = LLVMConstInt (LLVMInt32Type (), loc->row, FALSE);
- md_args [nmd_args ++] = LLVMConstInt (LLVMInt32Type (), loc->column, FALSE);
- md_args [nmd_args ++] = ctx->dbg_md;
- md_args [nmd_args ++] = NULL;
- loc_md = LLVMMDNode (md_args, nmd_args);
- LLVMSetCurrentDebugLocation (builder, loc_md);
-#endif
mono_debug_free_source_location (loc);
}
}
@@ -9919,15 +9517,11 @@ emit_dbg_loc (EmitContext *ctx, LLVMBuilderRef builder, const unsigned char *cil
static void
emit_default_dbg_loc (EmitContext *ctx, LLVMBuilderRef builder)
{
-#if LLVM_API_VERSION > 100
if (ctx->minfo) {
LLVMValueRef loc_md;
loc_md = (LLVMValueRef)mono_llvm_di_create_location (ctx->module->di_builder, ctx->dbg_md, 0, 0);
mono_llvm_di_set_location (builder, loc_md);
}
-#else
- /* Older llvm versions don't require this */
-#endif
}
/*
diff --git a/mono/mini/mini-trampolines.c b/mono/mini/mini-trampolines.c
index 36d596b9082..781e91bff86 100644
--- a/mono/mini/mini-trampolines.c
+++ b/mono/mini/mini-trampolines.c
@@ -433,9 +433,7 @@ common_call_trampoline (host_mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVTa
gpointer *orig_vtable_slot, *vtable_slot_to_patch = NULL;
MonoJitInfo *ji = NULL;
MonoDomain *domain = mono_domain_get ();
-#if LLVM_API_VERSION > 100
MonoMethod *orig_method = m;
-#endif
error_init (error);
@@ -742,13 +740,11 @@ common_call_trampoline (host_mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVTa
*/
no_patch = TRUE;
}
-#if LLVM_API_VERSION > 100
if (!no_patch)
mini_patch_llvm_jit_callees (domain, orig_method, addr);
/* LLVM code doesn't make direct calls */
if (ji && ji->from_llvm)
no_patch = TRUE;
-#endif
if (!no_patch && mono_method_same_domain (ji, target_ji))
mono_arch_patch_callsite ((guint8 *)ji->code_start, code, (guint8 *)addr);
}
diff --git a/scripts/ci/run-jenkins.sh b/scripts/ci/run-jenkins.sh
index 37c40fec6c7..e52167eb3bb 100755
--- a/scripts/ci/run-jenkins.sh
+++ b/scripts/ci/run-jenkins.sh
@@ -127,9 +127,6 @@ fi
if [[ ${CI_TAGS} == *'sdks-llvm'* ]]; then
${TESTCMD} --label=archive --timeout=120m --fatal $gnumake -j ${CI_CPU_COUNT} --output-sync=recurse --trace -C sdks/builds archive-llvm-llvm{,win}{32,64} NINJA=
- if [[ ${CI_TAGS} == *'osx-amd64'* ]]; then
- ${TESTCMD} --label=archive-llvm36 --timeout=60m --fatal $gnumake -j ${CI_CPU_COUNT} --output-sync=recurse --trace -C sdks/builds archive-llvm36-llvm32 NINJA=
- fi
exit 0
fi
diff --git a/sdks/builds/llvm.mk b/sdks/builds/llvm.mk
index 19434aacf12..ab407d6b37a 100644
--- a/sdks/builds/llvm.mk
+++ b/sdks/builds/llvm.mk
@@ -1,13 +1,4 @@
-LLVM36_SRC?=$(TOP)/sdks/builds/toolchains/llvm36
-
-$(TOP)/sdks/builds/toolchains/llvm36:
- mkdir -p $(dir $@)
- git clone -b $(LLVM36_BRANCH) https://github.com/mono/llvm.git $@
- cd $@ && git checkout $(LLVM36_HASH)
-
-$(LLVM36_SRC)/configure: | $(LLVM36_SRC)
-
##
# Parameters
# $(1): version
@@ -42,9 +33,6 @@ $(eval $(call LLVMProvisionTemplate,llvm,llvmwin64,$(TOP)/external/llvm))
ifeq ($(UNAME),Windows)
$(eval $(call LLVMProvisionTemplate,llvm,llvmwin64-msvc,$(TOP)/external/llvm))
endif
-ifeq ($(UNAME),Darwin)
-$(eval $(call LLVMProvisionTemplate,llvm36,llvm32,$(LLVM36_SRC)))
-endif
##
# Parameters
@@ -100,63 +88,6 @@ $(eval $(call LLVMTemplate,llvm64))
# Parameters
# $(1): target
# $(2): arch
-define LLVM36Template
-
-_llvm36-$(1)_CFLAGS=
-
-_llvm36-$(1)_CXXFLAGS= \
- $$(if $$(filter $$(UNAME),Darwin),-mmacosx-version-min=10.9 -stdlib=libc++)
-
-_llvm36-$(1)_LDFLAGS= \
- $$(if $$(filter $$(UNAME),Darwin),-mmacosx-version-min=10.9)
-
-_llvm36-$(1)_CONFIGURE_ENVIRONMENT= \
- $$(if $$(llvm36-$(1)_CC),CC="$$(llvm36-$(1)_CC)") \
- $$(if $$(llvm36-$(1)_CXX),CXX="$$(llvm36-$(1)_CXX)") \
- CFLAGS="$$(_llvm36-$(1)_CFLAGS)" \
- CXXFLAGS="$$(_llvm36-$(1)_CXXFLAGS)" \
- LDFLAGS="$$(_llvm36-$(1)_LDFLAGS)"
-
-_llvm36-$(1)_CONFIGURE_FLAGS= \
- --host=$$(if $$(filter $$(UNAME),Darwin),$(2)-apple-darwin10,$$(if $$(filter $$(UNAME),Linux),$(2)-linux-gnu,$$(error "Unknown UNAME='$$(UNAME)'"))) \
- --cache-file=$$(TOP)/sdks/builds/llvm36-$(1).config.cache \
- --prefix=$$(TOP)/sdks/out/llvm36-$(1) \
- --enable-assertions=no \
- --enable-optimized \
- --enable-targets="arm,aarch64,x86" \
- $$(if $$(filter $$(UNAME),Darwin),--enable-libcpp)
-
-.stamp-llvm36-$(1)-configure: $$(LLVM36_SRC)/configure
- mkdir -p $$(TOP)/sdks/builds/llvm36-$(1)
- cd $$(TOP)/sdks/builds/llvm36-$(1) && $$< $$(_llvm36-$(1)_CONFIGURE_ENVIRONMENT) $$(_llvm36-$(1)_CONFIGURE_FLAGS)
- touch $$@
-
-.PHONY: setup-llvm36-$(1)
-setup-llvm36-$(1):
- mkdir -p $$(TOP)/sdks/out/llvm36-$(1)
-
-.PHONY: build-llvm36-$(1)
-build-llvm36-$(1): .stamp-llvm36-$(1)-configure
- $$(MAKE) -C $$(TOP)/sdks/builds/llvm36-$(1)
-
-.PHONY: package-llvm36-$(1)
-package-llvm36-$(1): setup-llvm36-$(1) build-llvm36-$(1)
- $$(MAKE) -C $$(TOP)/sdks/builds/llvm36-$(1) install
-
-.PHONY: clean-llvm36-$(1)
-clean-llvm36-$(1)::
- rm -rf .stamp-llvm36-$(1)-configure $$(TOP)/sdks/builds/llvm36-$(1) $$(TOP)/sdks/builds/llvm36-$(1).config.cache $$(TOP)/sdks/out/llvm36-$(1)
-
-endef
-
-ifeq ($(UNAME),Darwin)
-$(eval $(call LLVM36Template,llvm32,i386))
-endif
-
-##
-# Parameters
-# $(1): target
-# $(2): arch
# $(3): mxe
define LLVMMxeTemplate
diff --git a/sdks/versions.mk b/sdks/versions.mk
index 542b5f33f26..99409be38e2 100644
--- a/sdks/versions.mk
+++ b/sdks/versions.mk
@@ -3,12 +3,6 @@
MXE_HASH?=b9cbb53541a0e10fe4fe81f22bd586cb9cdc922a
-# LLVM
-
-LLVM36_BRANCH=master
-LLVM36_HASH?=acb33f3436e7dd5b6588c9f044d012846c4d55c4
-LLVM36_JENKINS_LANE=build-package-osx-llvm
-
# Android
ANDROID_BUILD_TOOLS_VERSION?=27