@@ -26,7 +26,7 @@ static inline void arrayassign_safe(int hasptr, jl_value_t *parent, char *dst, c
2626 assert (nb >= jl_datatype_size (jl_typeof (src ))); // nb might move some undefined bits, but we should be okay with that
2727 if (hasptr ) {
2828 size_t nptr = nb / sizeof (void * );
29- memmove_refs ((void * * )dst , (void * * )src , nptr );
29+ memmove_refs ((void * * )dst , (void * const * )src , nptr );
3030 jl_gc_multi_wb (parent , src );
3131 }
3232 else {
@@ -588,7 +588,7 @@ JL_DLLEXPORT jl_value_t *jl_ptrarrayref(jl_array_t *a JL_PROPAGATES_ROOT, size_t
588588{
589589 assert (i < jl_array_len (a ));
590590 assert (a -> flags .ptrarray );
591- jl_value_t * elt = jl_atomic_load_relaxed (((jl_value_t * * )a -> data ) + i );
591+ jl_value_t * elt = jl_atomic_load_relaxed (((_Atomic ( jl_value_t * ) * )a -> data ) + i );
592592 if (elt == NULL )
593593 jl_throw (jl_undefref_exception );
594594 return elt ;
@@ -617,7 +617,7 @@ JL_DLLEXPORT jl_value_t *jl_arrayref(jl_array_t *a, size_t i)
617617JL_DLLEXPORT int jl_array_isassigned (jl_array_t * a , size_t i )
618618{
619619 if (a -> flags .ptrarray ) {
620- return jl_atomic_load_relaxed (((jl_value_t * * )jl_array_data (a )) + i ) != NULL ;
620+ return jl_atomic_load_relaxed (((_Atomic ( jl_value_t * ) * )jl_array_data (a )) + i ) != NULL ;
621621 }
622622 else if (a -> flags .hasptr ) {
623623 jl_datatype_t * eltype = (jl_datatype_t * )jl_tparam0 (jl_typeof (a ));
@@ -656,7 +656,7 @@ JL_DLLEXPORT void jl_arrayset(jl_array_t *a JL_ROOTING_ARGUMENT, jl_value_t *rhs
656656 arrayassign_safe (hasptr , jl_array_owner (a ), & ((char * )a -> data )[i * a -> elsize ], rhs , a -> elsize );
657657 }
658658 else {
659- jl_atomic_store_relaxed (((jl_value_t * * )a -> data ) + i , rhs );
659+ jl_atomic_store_relaxed (((_Atomic ( jl_value_t * ) * )a -> data ) + i , rhs );
660660 jl_gc_wb (jl_array_owner (a ), rhs );
661661 }
662662}
@@ -666,7 +666,7 @@ JL_DLLEXPORT void jl_arrayunset(jl_array_t *a, size_t i)
666666 if (i >= jl_array_len (a ))
667667 jl_bounds_error_int ((jl_value_t * )a , i + 1 );
668668 if (a -> flags .ptrarray )
669- jl_atomic_store_relaxed (((jl_value_t * * )a -> data ) + i , NULL );
669+ jl_atomic_store_relaxed (((_Atomic ( jl_value_t * ) * )a -> data ) + i , NULL );
670670 else if (a -> flags .hasptr ) {
671671 size_t elsize = a -> elsize ;
672672 jl_assume (elsize >= sizeof (void * ) && elsize % sizeof (void * ) == 0 );
@@ -1243,9 +1243,11 @@ static NOINLINE ssize_t jl_array_ptr_copy_forward(jl_value_t *owner,
12431243 void * * src_p , void * * dest_p ,
12441244 ssize_t n ) JL_NOTSAFEPOINT
12451245{
1246+ _Atomic(void * ) * src_pa = (_Atomic (void * )* )src_p ;
1247+ _Atomic(void * ) * dest_pa = (_Atomic (void * )* )dest_p ;
12461248 for (ssize_t i = 0 ; i < n ; i ++ ) {
1247- void * val = jl_atomic_load_relaxed (src_p + i );
1248- jl_atomic_store_relaxed (dest_p + i , val );
1249+ void * val = jl_atomic_load_relaxed (src_pa + i );
1250+ jl_atomic_store_relaxed (dest_pa + i , val );
12491251 // `val` is young or old-unmarked
12501252 if (val && !(jl_astaggedvalue (val )-> bits .gc & GC_MARKED )) {
12511253 jl_gc_queue_root (owner );
@@ -1259,9 +1261,11 @@ static NOINLINE ssize_t jl_array_ptr_copy_backward(jl_value_t *owner,
12591261 void * * src_p , void * * dest_p ,
12601262 ssize_t n ) JL_NOTSAFEPOINT
12611263{
1264+ _Atomic(void * ) * src_pa = (_Atomic (void * )* )src_p ;
1265+ _Atomic(void * ) * dest_pa = (_Atomic (void * )* )dest_p ;
12621266 for (ssize_t i = 0 ; i < n ; i ++ ) {
1263- void * val = jl_atomic_load_relaxed (src_p + n - i - 1 );
1264- jl_atomic_store_relaxed (dest_p + n - i - 1 , val );
1267+ void * val = jl_atomic_load_relaxed (src_pa + n - i - 1 );
1268+ jl_atomic_store_relaxed (dest_pa + n - i - 1 , val );
12651269 // `val` is young or old-unmarked
12661270 if (val && !(jl_astaggedvalue (val )-> bits .gc & GC_MARKED )) {
12671271 jl_gc_queue_root (owner );
0 commit comments