@@ -1861,7 +1861,8 @@ macro_rules! if_not_8_bit {
1861
1861
( $_: ident, $( $tt: tt) * ) => { $( $tt) * } ;
1862
1862
}
1863
1863
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" ) ) ]
1865
1866
macro_rules! atomic_int {
1866
1867
( $cfg_cas: meta,
1867
1868
$cfg_align: meta,
@@ -2988,7 +2989,8 @@ atomic_int_ptr_sized! {
2988
2989
}
2989
2990
2990
2991
#[ 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" ) ) ]
2992
2994
fn strongest_failure_ordering ( order : Ordering ) -> Ordering {
2993
2995
match order {
2994
2996
Release => Relaxed ,
@@ -3030,7 +3032,8 @@ unsafe fn atomic_load<T: Copy>(dst: *const T, order: Ordering) -> T {
3030
3032
}
3031
3033
3032
3034
#[ 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" ) ) ]
3034
3037
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3035
3038
unsafe fn atomic_swap < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3036
3039
// 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 {
3047
3050
3048
3051
/// Returns the previous value (like __sync_fetch_and_add).
3049
3052
#[ 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" ) ) ]
3051
3055
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3052
3056
unsafe fn atomic_add < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3053
3057
// 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 {
3064
3068
3065
3069
/// Returns the previous value (like __sync_fetch_and_sub).
3066
3070
#[ 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" ) ) ]
3068
3073
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3069
3074
unsafe fn atomic_sub < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3070
3075
// 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 {
3080
3085
}
3081
3086
3082
3087
#[ 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" ) ) ]
3084
3090
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3085
3091
unsafe fn atomic_compare_exchange < T : Copy > (
3086
3092
dst : * mut T ,
@@ -3115,7 +3121,8 @@ unsafe fn atomic_compare_exchange<T: Copy>(
3115
3121
}
3116
3122
3117
3123
#[ 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" ) ) ]
3119
3126
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3120
3127
unsafe fn atomic_compare_exchange_weak < T : Copy > (
3121
3128
dst : * mut T ,
@@ -3150,7 +3157,8 @@ unsafe fn atomic_compare_exchange_weak<T: Copy>(
3150
3157
}
3151
3158
3152
3159
#[ 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" ) ) ]
3154
3162
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3155
3163
unsafe fn atomic_and < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3156
3164
// 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 {
3166
3174
}
3167
3175
3168
3176
#[ 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" ) ) ]
3170
3179
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3171
3180
unsafe fn atomic_nand < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3172
3181
// 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 {
3182
3191
}
3183
3192
3184
3193
#[ 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" ) ) ]
3186
3196
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3187
3197
unsafe fn atomic_or < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3188
3198
// 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 {
3198
3208
}
3199
3209
3200
3210
#[ 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" ) ) ]
3202
3213
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3203
3214
unsafe fn atomic_xor < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3204
3215
// 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 {
3215
3226
3216
3227
/// returns the max value (signed comparison)
3217
3228
#[ 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" ) ) ]
3219
3231
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3220
3232
unsafe fn atomic_max < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3221
3233
// 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 {
3232
3244
3233
3245
/// returns the min value (signed comparison)
3234
3246
#[ 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" ) ) ]
3236
3249
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3237
3250
unsafe fn atomic_min < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3238
3251
// 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 {
3249
3262
3250
3263
/// returns the max value (unsigned comparison)
3251
3264
#[ 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" ) ) ]
3253
3267
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3254
3268
unsafe fn atomic_umax < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3255
3269
// 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 {
3266
3280
3267
3281
/// returns the min value (unsigned comparison)
3268
3282
#[ 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" ) ) ]
3270
3285
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
3271
3286
unsafe fn atomic_umin < T : Copy > ( dst : * mut T , val : T , order : Ordering ) -> T {
3272
3287
// SAFETY: the caller must uphold the safety contract for `atomic_umin`
0 commit comments