@@ -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