about summary refs log tree commit diff
diff options
context:
space:
mode:
authorwillmo <willmo@gmail.com>2018-07-07 20:09:34 -0700
committerGitHub <noreply@github.com>2018-07-07 20:09:34 -0700
commite769deca998479c7b78931af45a26c6c822c74f7 (patch)
tree58ca608a70663b84518e762183b6c5a0d991fa78
parent9fd3d7899a444fe110ae9277542b306844ecf0c4 (diff)
downloadrust-e769deca998479c7b78931af45a26c6c822c74f7.tar.gz
rust-e769deca998479c7b78931af45a26c6c822c74f7.zip
Add #[repr(transparent)] to Atomic* types
This allows them to be used in #[repr(C)] structs without warnings. Since rust-lang/rfcs#1649 and rust-lang/rust#35603 they are already documented to have "the same in-memory representation as" their corresponding primitive types. This just makes that explicit.
-rw-r--r--src/libcore/sync/atomic.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libcore/sync/atomic.rs b/src/libcore/sync/atomic.rs
index e9d1fb89115..1e2b18bf9b0 100644
--- a/src/libcore/sync/atomic.rs
+++ b/src/libcore/sync/atomic.rs
@@ -124,6 +124,7 @@ pub fn spin_loop_hint() {
 /// [`bool`]: ../../../std/primitive.bool.html
 #[cfg(target_has_atomic = "8")]
 #[stable(feature = "rust1", since = "1.0.0")]
+#[repr(transparent)]
 pub struct AtomicBool {
     v: UnsafeCell<u8>,
 }
@@ -147,6 +148,7 @@ unsafe impl Sync for AtomicBool {}
 /// This type has the same in-memory representation as a `*mut T`.
 #[cfg(target_has_atomic = "ptr")]
 #[stable(feature = "rust1", since = "1.0.0")]
+#[repr(transparent)]
 pub struct AtomicPtr<T> {
     p: UnsafeCell<*mut T>,
 }
@@ -976,6 +978,7 @@ macro_rules! atomic_int {
         ///
         /// [module-level documentation]: index.html
         #[$stable]
+        #[repr(transparent)]
         pub struct $atomic_type {
             v: UnsafeCell<$int_type>,
         }