@@ -3824,30 +3824,29 @@ static bool emit_f_opfield(jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f,
3824
3824
3825
3825
static jl_cgval_t emit_isdefinedglobal (jl_codectx_t &ctx, jl_module_t *modu, jl_sym_t *name, int allow_import, enum jl_memory_order order)
3826
3826
{
3827
- Value *isnull = NULL ;
3828
3827
jl_binding_t *bnd = allow_import ? jl_get_binding (modu, name) : jl_get_module_binding (modu, name, 0 );
3829
3828
struct restriction_kind_pair rkp = { NULL , NULL , PARTITION_KIND_GUARD, 0 };
3830
3829
if (allow_import && jl_get_binding_leaf_partitions_restriction_kind (bnd, &rkp, ctx.min_world , ctx.max_world )) {
3831
- if (jl_bkind_is_some_constant (rkp.kind ))
3832
- return mark_julia_const (ctx, rkp. restriction );
3830
+ if (jl_bkind_is_some_constant (rkp.kind ) && rkp. restriction )
3831
+ return mark_julia_const (ctx, jl_true );
3833
3832
if (rkp.kind == PARTITION_KIND_GLOBAL) {
3834
3833
Value *bp = julia_binding_gv (ctx, rkp.binding_if_global );
3835
3834
bp = julia_binding_pvalue (ctx, bp);
3836
3835
LoadInst *v = ctx.builder .CreateAlignedLoad (ctx.types ().T_prjlvalue , bp, Align (sizeof (void *)));
3837
3836
jl_aliasinfo_t ai = jl_aliasinfo_t::fromTBAA (ctx, ctx.tbaa ().tbaa_binding );
3838
3837
ai.decorateInst (v);
3839
3838
v->setOrdering (get_llvm_atomic_order (order));
3840
- isnull = ctx.builder .CreateICmpNE (v, Constant::getNullValue (ctx.types ().T_prjlvalue ));
3839
+ Value * isnull = ctx.builder .CreateICmpNE (v, Constant::getNullValue (ctx.types ().T_prjlvalue ));
3841
3840
return mark_julia_type (ctx, isnull, false , jl_bool_type);
3842
3841
}
3843
3842
}
3844
- Value *v = ctx.builder .CreateCall (prepare_call (jlboundp_func), {
3843
+ Value *isdef = ctx.builder .CreateCall (prepare_call (jlboundp_func), {
3845
3844
literal_pointer_val (ctx, (jl_value_t *)modu),
3846
3845
literal_pointer_val (ctx, (jl_value_t *)name),
3847
3846
ConstantInt::get (getInt32Ty (ctx.builder .getContext ()), allow_import)
3848
3847
});
3849
- isnull = ctx.builder .CreateICmpNE (v, ConstantInt::get ( getInt32Ty ( ctx.builder .getContext ()), 0 ));
3850
- return mark_julia_type (ctx, isnull , false , jl_bool_type);
3848
+ isdef = ctx.builder .CreateTrunc (isdef, getInt1Ty ( ctx.builder .getContext ()));
3849
+ return mark_julia_type (ctx, isdef , false , jl_bool_type);
3851
3850
}
3852
3851
3853
3852
static bool emit_f_opmemory (jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f,
0 commit comments