diff options
-rw-r--r-- | mono/mini/aot-compiler.c | 16 | ||||
-rw-r--r-- | mono/mini/mini-llvm-cpp.cpp | 86 | ||||
-rw-r--r-- | mono/mini/mini-llvm.c | 452 | ||||
-rw-r--r-- | mono/mini/mini-trampolines.c | 4 | ||||
-rwxr-xr-x | scripts/ci/run-jenkins.sh | 3 | ||||
-rw-r--r-- | sdks/builds/llvm.mk | 69 | ||||
-rw-r--r-- | sdks/versions.mk | 6 |
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 |