about summary refs log tree commit diff
path: root/src/libcore/sync
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2020-06-12 00:05:27 +0200
committerGitHub <noreply@github.com>2020-06-12 00:05:27 +0200
commit3b41e54799754fcdc7ae0429bd8fd64b5bd5a1fd (patch)
treefa1715c20e5609f61c4cf414a94b3263ac15dd16 /src/libcore/sync
parent2e42476267011bd8937dfcc0f707aa08e34d54d9 (diff)
parent05b2d3f7dc623fc5304fa0edc9efeaf08ea1db26 (diff)
downloadrust-3b41e54799754fcdc7ae0429bd8fd64b5bd5a1fd.tar.gz
rust-3b41e54799754fcdc7ae0429bd8fd64b5bd5a1fd.zip
Rollup merge of #73036 - alexcrichton:update-wasm-fence, r=Mark-Simulacrum
std: Enable atomic.fence emission on wasm32

This commit removes the `#[cfg]` guards in `atomic::fence` on wasm
targets. Since these guards were originally added the upstream wasm
specification for threads gained an `atomic.fence` instruction, so LLVM
no longer panics on these intrinsics.

Although there aren't a ton of tests in-repo for this right now I've
tested locally and all of these fences generate `atomic.fence`
instructions in wasm.

Closes #65687
Closes #72997
Diffstat (limited to 'src/libcore/sync')
-rw-r--r--src/libcore/sync/atomic.rs8
1 files changed, 0 insertions, 8 deletions
diff --git a/src/libcore/sync/atomic.rs b/src/libcore/sync/atomic.rs
index 477cb24d6be..1cd68f2881b 100644
--- a/src/libcore/sync/atomic.rs
+++ b/src/libcore/sync/atomic.rs
@@ -2623,15 +2623,7 @@ unsafe fn atomic_umin<T: Copy>(dst: *mut T, val: T, order: Ordering) -> T {
 /// [`Relaxed`]: enum.Ordering.html#variant.Relaxed
 #[inline]
 #[stable(feature = "rust1", since = "1.0.0")]
-#[cfg_attr(target_arch = "wasm32", allow(unused_variables))]
 pub fn fence(order: Ordering) {
-    // On wasm32 it looks like fences aren't implemented in LLVM yet in that
-    // they will cause LLVM to abort. The wasm instruction set doesn't have
-    // fences right now. There's discussion online about the best way for tools
-    // to conventionally implement fences at
-    // https://github.com/WebAssembly/tool-conventions/issues/59. We should
-    // follow that discussion and implement a solution when one comes about!
-    #[cfg(not(target_arch = "wasm32"))]
     // SAFETY: using an atomic fence is safe.
     unsafe {
         match order {