-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Drop support for LLVM <= 3.9.1 #22401
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
As of the merge of #21888, we no longer support building on LLVM <= 3.9.1. This is essentialyl the mechanical cleanup to rip out all code that we had to support building on older LLVM versions. There may still be some residual support left in places and of course some things can now be cleaned up further, but this should get us started.
@@ -1136,20 +1101,14 @@ static jl_cgval_t emit_llvmcall(jl_value_t **args, size_t nargs, jl_codectx_t *c | |||
it != argtypes.end(); ++it, ++i) | |||
assert(*it == f->getFunctionType()->getParamType(i)); | |||
|
|||
#ifdef USE_MCJIT |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we assuming MCJIT now rather than ORC?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
USE_MCJIT is always defined for USE_ORCJIT
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the default use to be the very old (3.3) JIT. Now MCJIT is the default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, thanks for the explanation. Didn't know.
@@ -583,8 +583,7 @@ static int NoteSafepoint(State &S, BBState &BBS, CallInst *CI) { | |||
} | |||
|
|||
void LateLowerGCFrame::NoteUse(State &S, BBState &BBS, Value *V, BitVector &Uses) { | |||
// Short circuit to have to avoid dealing specially with vectors of | |||
// constants, etc. | |||
// Short circuit to avoid having to dealing with vectors of constants, etc. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
having to deal with
not yet addressed: |
I typo'd here. This drops support for < 3.9.1 or <= 3.9.0 |
also delete old patches and build system code for these old versions? |
@@ -4842,16 +4611,12 @@ static Function *gen_cfun_wrapper(jl_function_t *ff, jl_value_t *jlrettype, jl_t | |||
} | |||
(void)at; | |||
} | |||
Value *argn = builder.CreateConstInBoundsGEP1_32(LLVM37_param(NULL) myargs, i); | |||
Value *argn = builder.CreateConstInBoundsGEP1_32(NULL, myargs, i); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
T_prjlvalue
@@ -4710,7 +4487,7 @@ static Function *gen_cfun_wrapper(jl_function_t *ff, jl_value_t *jlrettype, jl_t | |||
// for jlcall, we need to pass the function object even if it is a ghost. | |||
// here we reconstruct the function instance from its type (first elt of argt) | |||
Value *theF = literal_pointer_val((jl_value_t*)ff); | |||
GetElementPtrInst *slot = GetElementPtrInst::Create(LLVM37_param(NULL) myargs, | |||
GetElementPtrInst *slot = GetElementPtrInst::Create(NULL, myargs, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
T_prjlvalue
@@ -4725,22 +4502,14 @@ static Function *gen_cfun_wrapper(jl_function_t *ff, jl_value_t *jlrettype, jl_t | |||
builder.CreateCondBr(age_ok, b_jlcall, b_generic); | |||
builder.SetInsertPoint(b_jlcall); | |||
Value *nargs_v = ConstantInt::get(T_int32, nargs); | |||
Value *myargs1 = builder.CreateConstInBoundsGEP1_32(LLVM37_param(NULL) myargs, 1); | |||
#if JL_LLVM_VERSION >= 30700 | |||
Value *myargs1 = builder.CreateConstInBoundsGEP1_32(NULL, myargs, 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
T_prjlvalue
@@ -4628,7 +4407,7 @@ static Function *gen_cfun_wrapper(jl_function_t *ff, jl_value_t *jlrettype, jl_t | |||
// figure out how to repack this type | |||
if (!specsig) { | |||
Value *arg = boxed(inputarg, &ctx, false); // don't want a gcroot, since it's about to be put into the jlcall frame anyways | |||
GetElementPtrInst *slot = GetElementPtrInst::Create(LLVM37_param(NULL) myargs, | |||
GetElementPtrInst *slot = GetElementPtrInst::Create(NULL, myargs, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
T_prjlvalue
Since this touches so much code, I'll go ahead and merge this and do follow-up cleanups in a separate PR to avoid having to rebase. |
As of the merge of #21888, we no longer support building on LLVM <= 3.9.1. This is essentially the mechanical cleanup to rip out all code that we had to support building on older LLVM versions. There may still be some residual support left in places and of course some things can now be cleaned up further, but this should get us started.
As of the merge of #21888, we no longer support building on LLVM <= 3.9.1.
This is essentialyl the mechanical cleanup to rip out all code that
we had to support building on older LLVM versions. There may still be
some residual support left in places and of course some things can now
be cleaned up further, but this should get us started.