Skip to content

Commit

Permalink
Try to loosen cfunction optimization type check.
Browse files Browse the repository at this point in the history
  • Loading branch information
yuyichao committed May 24, 2017
1 parent a145a59 commit 3660535
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions src/ccall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1787,18 +1787,26 @@ static jl_cgval_t emit_ccall(jl_value_t **args, size_t nargs, jl_codectx_t *ctx)
jl_value_t *frt = expr_type(args[6], ctx);
if (f && (jl_is_type_type((jl_value_t*)frt) && !jl_has_free_typevars(jl_tparam0(frt)))) {
fargt = static_eval(args[8], ctx, true, true);
if (fargt) {
if (jl_is_tuple(fargt)) {
// TODO: maybe deprecation warning, better checking
fargt = (jl_value_t*)jl_apply_tuple_type_v((jl_value_t**)jl_data_ptr(fargt), jl_nfields(fargt));
}
}
else {
if (!fargt) {
fargt = expr_type(args[8], ctx);
if (jl_is_type_type((jl_value_t*)fargt))
if (jl_is_type_type((jl_value_t*)fargt)) {
fargt = jl_tparam0(fargt);
if (jl_has_free_typevars(fargt) || !jl_is_tuple_type(fargt)) {
fargt = nullptr;
}
}
else {
fargt = nullptr;
}
}
else if (jl_is_tuple(fargt)) {
// TODO: maybe deprecation warning, better checking
fargt = (jl_value_t*)jl_apply_tuple_type_v((jl_value_t**)jl_data_ptr(fargt), jl_nfields(fargt));
}
if (jl_is_tuple_type(fargt) && jl_is_leaf_type(fargt)) {
else if (!jl_is_tuple_type(fargt)) {
fargt = nullptr;
}
if (fargt) {
frt = jl_tparam0(frt);
Value *llvmf = NULL;
JL_TRY {
Expand Down

0 comments on commit 3660535

Please sign in to comment.