@@ -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 {
@@ -581,7 +581,7 @@ JL_DLLEXPORT jl_value_t *jl_ptrarrayref(jl_array_t *a JL_PROPAGATES_ROOT, size_t
581581{
582582 assert (i < jl_array_len (a ));
583583 assert (a -> flags .ptrarray );
584- jl_value_t * elt = jl_atomic_load_relaxed (((jl_value_t * * )a -> data ) + i );
584+ jl_value_t * elt = jl_atomic_load_relaxed (((_Atomic ( jl_value_t * ) * )a -> data ) + i );
585585 if (elt == NULL )
586586 jl_throw (jl_undefref_exception );
587587 return elt ;
@@ -610,7 +610,7 @@ JL_DLLEXPORT jl_value_t *jl_arrayref(jl_array_t *a, size_t i)
610610JL_DLLEXPORT int jl_array_isassigned (jl_array_t * a , size_t i )
611611{
612612 if (a -> flags .ptrarray ) {
613- return jl_atomic_load_relaxed (((jl_value_t * * )jl_array_data (a )) + i ) != NULL ;
613+ return jl_atomic_load_relaxed (((_Atomic ( jl_value_t * ) * )jl_array_data (a )) + i ) != NULL ;
614614 }
615615 else if (a -> flags .hasptr ) {
616616 jl_datatype_t * eltype = (jl_datatype_t * )jl_tparam0 (jl_typeof (a ));
@@ -649,7 +649,7 @@ JL_DLLEXPORT void jl_arrayset(jl_array_t *a JL_ROOTING_ARGUMENT, jl_value_t *rhs
649649 arrayassign_safe (hasptr , jl_array_owner (a ), & ((char * )a -> data )[i * a -> elsize ], rhs , a -> elsize );
650650 }
651651 else {
652- jl_atomic_store_relaxed (((jl_value_t * * )a -> data ) + i , rhs );
652+ jl_atomic_store_relaxed (((_Atomic ( jl_value_t * ) * )a -> data ) + i , rhs );
653653 jl_gc_wb (jl_array_owner (a ), rhs );
654654 }
655655}
@@ -659,7 +659,7 @@ JL_DLLEXPORT void jl_arrayunset(jl_array_t *a, size_t i)
659659 if (i >= jl_array_len (a ))
660660 jl_bounds_error_int ((jl_value_t * )a , i + 1 );
661661 if (a -> flags .ptrarray )
662- jl_atomic_store_relaxed (((jl_value_t * * )a -> data ) + i , NULL );
662+ jl_atomic_store_relaxed (((_Atomic ( jl_value_t * ) * )a -> data ) + i , NULL );
663663 else if (a -> flags .hasptr ) {
664664 size_t elsize = a -> elsize ;
665665 jl_assume (elsize >= sizeof (void * ) && elsize % sizeof (void * ) == 0 );
@@ -1236,9 +1236,11 @@ static NOINLINE ssize_t jl_array_ptr_copy_forward(jl_value_t *owner,
12361236 void * * src_p , void * * dest_p ,
12371237 ssize_t n ) JL_NOTSAFEPOINT
12381238{
1239+ _Atomic(void * ) * src_pa = (_Atomic (void * )* )src_p ;
1240+ _Atomic(void * ) * dest_pa = (_Atomic (void * )* )dest_p ;
12391241 for (ssize_t i = 0 ; i < n ; i ++ ) {
1240- void * val = jl_atomic_load_relaxed (src_p + i );
1241- jl_atomic_store_relaxed (dest_p + i , val );
1242+ void * val = jl_atomic_load_relaxed (src_pa + i );
1243+ jl_atomic_store_relaxed (dest_pa + i , val );
12421244 // `val` is young or old-unmarked
12431245 if (val && !(jl_astaggedvalue (val )-> bits .gc & GC_MARKED )) {
12441246 jl_gc_queue_root (owner );
@@ -1252,9 +1254,11 @@ static NOINLINE ssize_t jl_array_ptr_copy_backward(jl_value_t *owner,
12521254 void * * src_p , void * * dest_p ,
12531255 ssize_t n ) JL_NOTSAFEPOINT
12541256{
1257+ _Atomic(void * ) * src_pa = (_Atomic (void * )* )src_p ;
1258+ _Atomic(void * ) * dest_pa = (_Atomic (void * )* )dest_p ;
12551259 for (ssize_t i = 0 ; i < n ; i ++ ) {
1256- void * val = jl_atomic_load_relaxed (src_p + n - i - 1 );
1257- jl_atomic_store_relaxed (dest_p + n - i - 1 , val );
1260+ void * val = jl_atomic_load_relaxed (src_pa + n - i - 1 );
1261+ jl_atomic_store_relaxed (dest_pa + n - i - 1 , val );
12581262 // `val` is young or old-unmarked
12591263 if (val && !(jl_astaggedvalue (val )-> bits .gc & GC_MARKED )) {
12601264 jl_gc_queue_root (owner );
0 commit comments