@@ -716,7 +716,7 @@ static jl_cgval_t emit_pointerref(jl_codectx_t &ctx, jl_cgval_t *argv)
716716 assert (!isboxed);
717717 if (!type_is_ghost (ptrty)) {
718718 Value *thePtr = emit_unbox (ctx, ptrty->getPointerTo (), e, e.typ );
719- auto load = typed_load (ctx, thePtr, im1, ety, ctx.tbaa ().tbaa_data , nullptr , isboxed, AtomicOrdering::NotAtomic, true , align_nb);
719+ auto load = typed_load (ctx, thePtr, im1, ety, ctx.tbaa ().tbaa_data , nullptr , isboxed, AtomicOrdering::NotAtomic, false , align_nb);
720720 setName (ctx.emission_context , load.V , " pointerref" );
721721 return load;
722722 }
@@ -852,7 +852,7 @@ static jl_cgval_t emit_atomic_pointerref(jl_codectx_t &ctx, jl_cgval_t *argv)
852852 return jl_cgval_t ();
853853 }
854854
855- if (!jl_isbits (ety)) {
855+ if (!deserves_stack (ety)) {
856856 assert (jl_is_datatype (ety));
857857 Value *strct = emit_allocobj (ctx, (jl_datatype_t *)ety);
858858 setName (ctx.emission_context , strct, " atomic_pointerref_box" );
@@ -876,7 +876,7 @@ static jl_cgval_t emit_atomic_pointerref(jl_codectx_t &ctx, jl_cgval_t *argv)
876876 assert (!isboxed);
877877 if (!type_is_ghost (ptrty)) {
878878 Value *thePtr = emit_unbox (ctx, ptrty->getPointerTo (), e, e.typ );
879- auto load = typed_load (ctx, thePtr, nullptr , ety, ctx.tbaa ().tbaa_data , nullptr , isboxed, llvm_order, true , nb);
879+ auto load = typed_load (ctx, thePtr, nullptr , ety, ctx.tbaa ().tbaa_data , nullptr , isboxed, llvm_order, false , nb);
880880 setName (ctx.emission_context , load.V , " atomic_pointerref" );
881881 return load;
882882 }
@@ -954,6 +954,7 @@ static jl_cgval_t emit_atomic_pointerop(jl_codectx_t &ctx, intrinsic f, const jl
954954 }
955955
956956 if (!jl_isbits (ety)) {
957+ // if (!deserves_stack(ety))
957958 // Value *thePtr = emit_unbox(ctx, getInt8PtrTy(ctx.builder.getContext()), e, e.typ);
958959 // uint64_t size = jl_datatype_size(ety);
959960 return emit_runtime_call (ctx, f, argv, nargs); // TODO: optimizations
0 commit comments