@@ -1861,7 +1861,8 @@ macro_rules! if_not_8_bit {
18611861 ( $_: ident, $( $tt: tt) * ) => { $( $tt) * } ;
18621862}
18631863
1864- #[ cfg( target_has_atomic_load_store = "8" ) ]
1864+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic_load_store) ) ]
1865+ #[ cfg_attr( bootstrap, cfg( target_has_atomic_load_store = "8" ) ) ]
18651866macro_rules! atomic_int {
18661867 ( $cfg_cas: meta,
18671868 $cfg_align: meta,
@@ -2988,7 +2989,8 @@ atomic_int_ptr_sized! {
29882989}
29892990
29902991#[ inline]
2991- #[ cfg( target_has_atomic = "8" ) ]
2992+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
2993+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
29922994fn strongest_failure_ordering ( order : Ordering ) -> Ordering {
29932995 match order {
29942996 Release => Relaxed ,
@@ -3030,7 +3032,8 @@ unsafe fn atomic_load<T: Copy>(dst: *const T, order: Ordering) -> T {
30303032}
30313033
30323034#[ inline]
3033- #[ cfg( target_has_atomic = "8" ) ]
3035+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3036+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
30343037#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
30353038unsafe fn atomic_swap < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
30363039 // SAFETY: the caller must uphold the safety contract for `atomic_swap`.
@@ -3047,7 +3050,8 @@ unsafe fn atomic_swap<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
30473050
30483051/// Returns the previous value (like __sync_fetch_and_add).
30493052#[ inline]
3050- #[ cfg( target_has_atomic = "8" ) ]
3053+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3054+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
30513055#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
30523056unsafe fn atomic_add < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
30533057 // SAFETY: the caller must uphold the safety contract for `atomic_add`.
@@ -3064,7 +3068,8 @@ unsafe fn atomic_add<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
30643068
30653069/// Returns the previous value (like __sync_fetch_and_sub).
30663070#[ inline]
3067- #[ cfg( target_has_atomic = "8" ) ]
3071+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3072+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
30683073#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
30693074unsafe fn atomic_sub < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
30703075 // SAFETY: the caller must uphold the safety contract for `atomic_sub`.
@@ -3080,7 +3085,8 @@ unsafe fn atomic_sub<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
30803085}
30813086
30823087#[ inline]
3083- #[ cfg( target_has_atomic = "8" ) ]
3088+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3089+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
30843090#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
30853091unsafe fn atomic_compare_exchange < T : Copy > (
30863092 dst : * mut T ,
@@ -3115,7 +3121,8 @@ unsafe fn atomic_compare_exchange<T: Copy>(
31153121}
31163122
31173123#[ inline]
3118- #[ cfg( target_has_atomic = "8" ) ]
3124+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3125+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
31193126#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
31203127unsafe fn atomic_compare_exchange_weak < T : Copy > (
31213128 dst : * mut T ,
@@ -3150,7 +3157,8 @@ unsafe fn atomic_compare_exchange_weak<T: Copy>(
31503157}
31513158
31523159#[ inline]
3153- #[ cfg( target_has_atomic = "8" ) ]
3160+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3161+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
31543162#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
31553163unsafe fn atomic_and < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
31563164 // SAFETY: the caller must uphold the safety contract for `atomic_and`
@@ -3166,7 +3174,8 @@ unsafe fn atomic_and<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
31663174}
31673175
31683176#[ inline]
3169- #[ cfg( target_has_atomic = "8" ) ]
3177+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3178+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
31703179#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
31713180unsafe fn atomic_nand < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
31723181 // SAFETY: the caller must uphold the safety contract for `atomic_nand`
@@ -3182,7 +3191,8 @@ unsafe fn atomic_nand<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
31823191}
31833192
31843193#[ inline]
3185- #[ cfg( target_has_atomic = "8" ) ]
3194+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3195+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
31863196#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
31873197unsafe fn atomic_or < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
31883198 // SAFETY: the caller must uphold the safety contract for `atomic_or`
@@ -3198,7 +3208,8 @@ unsafe fn atomic_or<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
31983208}
31993209
32003210#[ inline]
3201- #[ cfg( target_has_atomic = "8" ) ]
3211+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3212+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
32023213#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
32033214unsafe fn atomic_xor < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
32043215 // SAFETY: the caller must uphold the safety contract for `atomic_xor`
@@ -3215,7 +3226,8 @@ unsafe fn atomic_xor<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
32153226
32163227/// returns the max value (signed comparison)
32173228#[ inline]
3218- #[ cfg( target_has_atomic = "8" ) ]
3229+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3230+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
32193231#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
32203232unsafe fn atomic_max < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
32213233 // SAFETY: the caller must uphold the safety contract for `atomic_max`
@@ -3232,7 +3244,8 @@ unsafe fn atomic_max<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
32323244
32333245/// returns the min value (signed comparison)
32343246#[ inline]
3235- #[ cfg( target_has_atomic = "8" ) ]
3247+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3248+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
32363249#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
32373250unsafe fn atomic_min < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
32383251 // SAFETY: the caller must uphold the safety contract for `atomic_min`
@@ -3249,7 +3262,8 @@ unsafe fn atomic_min<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
32493262
32503263/// returns the max value (unsigned comparison)
32513264#[ inline]
3252- #[ cfg( target_has_atomic = "8" ) ]
3265+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3266+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
32533267#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
32543268unsafe fn atomic_umax < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
32553269 // SAFETY: the caller must uphold the safety contract for `atomic_umax`
@@ -3266,7 +3280,8 @@ unsafe fn atomic_umax<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
32663280
32673281/// returns the min value (unsigned comparison)
32683282#[ inline]
3269- #[ cfg( target_has_atomic = "8" ) ]
3283+ #[ cfg_attr( not( bootstrap) , cfg( target_has_atomic) ) ]
3284+ #[ cfg_attr( bootstrap, cfg( target_has_atomic = "8" ) ) ]
32703285#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
32713286unsafe fn atomic_umin < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
32723287 // SAFETY: the caller must uphold the safety contract for `atomic_umin`
0 commit comments