@@ -3817,30 +3817,29 @@ static bool emit_f_opfield(jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f,
38173817
38183818static 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)
38193819{
3820- Value *isnull = NULL ;
38213820 jl_binding_t *bnd = allow_import ? jl_get_binding (modu, name) : jl_get_module_binding (modu, name, 0 );
38223821 struct restriction_kind_pair rkp = { NULL , NULL , PARTITION_KIND_GUARD, 0 };
38233822 if (allow_import && jl_get_binding_leaf_partitions_restriction_kind (bnd, &rkp, ctx.min_world , ctx.max_world )) {
3824- if (jl_bkind_is_some_constant (rkp.kind ))
3825- return mark_julia_const (ctx, rkp. restriction );
3823+ if (jl_bkind_is_some_constant (rkp.kind ) && rkp. restriction )
3824+ return mark_julia_const (ctx, jl_true );
38263825 if (rkp.kind == PARTITION_KIND_GLOBAL) {
38273826 Value *bp = julia_binding_gv (ctx, rkp.binding_if_global );
38283827 bp = julia_binding_pvalue (ctx, bp);
38293828 LoadInst *v = ctx.builder .CreateAlignedLoad (ctx.types ().T_prjlvalue , bp, Align (sizeof (void *)));
38303829 jl_aliasinfo_t ai = jl_aliasinfo_t::fromTBAA (ctx, ctx.tbaa ().tbaa_binding );
38313830 ai.decorateInst (v);
38323831 v->setOrdering (get_llvm_atomic_order (order));
3833- isnull = ctx.builder .CreateICmpNE (v, Constant::getNullValue (ctx.types ().T_prjlvalue ));
3832+ Value * isnull = ctx.builder .CreateICmpNE (v, Constant::getNullValue (ctx.types ().T_prjlvalue ));
38343833 return mark_julia_type (ctx, isnull, false , jl_bool_type);
38353834 }
38363835 }
3837- Value *v = ctx.builder .CreateCall (prepare_call (jlboundp_func), {
3836+ Value *isdef = ctx.builder .CreateCall (prepare_call (jlboundp_func), {
38383837 literal_pointer_val (ctx, (jl_value_t *)modu),
38393838 literal_pointer_val (ctx, (jl_value_t *)name),
38403839 ConstantInt::get (getInt32Ty (ctx.builder .getContext ()), allow_import)
38413840 });
3842- isnull = ctx.builder .CreateICmpNE (v, ConstantInt::get ( getInt32Ty ( ctx.builder .getContext ()), 0 ));
3843- return mark_julia_type (ctx, isnull , false , jl_bool_type);
3841+ isdef = ctx.builder .CreateTrunc (isdef, getInt1Ty ( ctx.builder .getContext ()));
3842+ return mark_julia_type (ctx, isdef , false , jl_bool_type);
38443843}
38453844
38463845static bool emit_f_opmemory (jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f,
0 commit comments