From a96056c338b3293f3e13427902b755c4677e735d Mon Sep 17 00:00:00 2001 From: fwcd Date: Fri, 19 May 2023 16:06:01 +0200 Subject: [PATCH] Conditionally compile atomic impls --- crates/musli/src/impls.rs | 19 +++++++++++++++++-- crates/musli/src/lib.rs | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/crates/musli/src/impls.rs b/crates/musli/src/impls.rs index bcb3d7078..e32471892 100644 --- a/crates/musli/src/impls.rs +++ b/crates/musli/src/impls.rs @@ -10,9 +10,16 @@ use core::num::{ NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8, NonZeroUsize, Wrapping, }; use core::sync::atomic::{ - AtomicBool, AtomicI16, AtomicI32, AtomicI64, AtomicI8, AtomicIsize, AtomicU16, AtomicU32, - AtomicU64, AtomicU8, AtomicUsize, + AtomicBool, AtomicUsize, AtomicIsize, }; +#[cfg(target_has_atomic_load_store = "8")] +use core::sync::atomic::{AtomicI8, AtomicU8}; +#[cfg(target_has_atomic_load_store = "16")] +use core::sync::atomic::{AtomicI16, AtomicU16}; +#[cfg(target_has_atomic_load_store = "32")] +use core::sync::atomic::{AtomicI32, AtomicU32}; +#[cfg(target_has_atomic_load_store = "64")] +use core::sync::atomic::{AtomicI64, AtomicU64}; use core::{fmt, marker}; use crate::de::{Decode, Decoder, ValueVisitor, VariantDecoder}; @@ -89,14 +96,22 @@ macro_rules! atomic_impl { } atomic_impl!(AtomicBool); +#[cfg(target_has_atomic_load_store = "16")] atomic_impl!(AtomicI16); +#[cfg(target_has_atomic_load_store = "32")] atomic_impl!(AtomicI32); +#[cfg(target_has_atomic_load_store = "64")] atomic_impl!(AtomicI64); +#[cfg(target_has_atomic_load_store = "8")] atomic_impl!(AtomicI8); atomic_impl!(AtomicIsize); +#[cfg(target_has_atomic_load_store = "16")] atomic_impl!(AtomicU16); +#[cfg(target_has_atomic_load_store = "32")] atomic_impl!(AtomicU32); +#[cfg(target_has_atomic_load_store = "64")] atomic_impl!(AtomicU64); +#[cfg(target_has_atomic_load_store = "8")] atomic_impl!(AtomicU8); atomic_impl!(AtomicUsize); diff --git a/crates/musli/src/lib.rs b/crates/musli/src/lib.rs index ae96abc43..17a5268cf 100644 --- a/crates/musli/src/lib.rs +++ b/crates/musli/src/lib.rs @@ -432,6 +432,7 @@ #![deny(missing_docs)] #![no_std] +#![feature(cfg_target_has_atomic)] #[cfg(feature = "alloc")] extern crate alloc;