Implement atomicReadMVar, fixing #4001.

We add the invariant to the MVar blocked threads queue that
threads blocked on an atomic read are always at the front of
the queue.  This invariant is easy to maintain, since takers
are only ever added to the end of the queue.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Add LOCK_CLOSURE macro for use in C--, which inlines the capability check.

This patch also tweaks lockClosure to be INLINE_HEADER, so C-- clients
don't accidentally use them and updates some other code which locks closures
to do the capability check.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Don't call dirty_MVAR on atomicReadMVar unless we change the MVar.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Implement tryAtomicReadMVar#.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Release note for atomicReadMVar and friends.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Fix typo in description
Rename atomicReadMVar and friends to readMVar.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
This reverts commit 163de25813d12764aa5ded1666af7c06fee0d67e and commit 279ac9f66a83203448b279ea478b2cc1dafbd35d.
adding FastString.string_table to the sharedCAF/Globals.c mechanism
Update docs for readMVar/tryReadMVar.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Add support for byte endian swapping for Word 16/32/64.

  * Exposes bSwap{,16,32,64}# primops
  * Add a new machop: MO_BSwap
  * Use a Stg implementation (hs_bswap{16,32,64}) for other implementation
    in NCG.
  * Generate bswap in X86 NCG for 32 and 64 bits, and for 16 bits, bswap+shr
    instead of using xchg.
  * Generate llvm.bswap intrinsics in llvm codegen.

Authored-by: Vincent Hanquez <tab@snarc.org>
Signed-off-by: Austin Seipp <aseipp@pobox.com>
Fix bug in readMVar implementation: keep clean MVars clean.

The readMVar implementation had only partially implemented
a micro-optimization which allows us to avoid adding an MVar
to the mutable list if the MVar was not changed.  However,
this was not applied to the release method on the fast path,
resulting in dirty MVars which were not added to the mutable list.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Sync the list of default warnings with reality; fixes #8060.
On second thoughts, don't document -fwarn-alternative-layout-rule-transitional

I think the alternative layout rule flags are deliberately not
documented at the moment.
Document -fwarn-pointless-pragmas; fixes #8049
Add `:show linker` command to `:help` output
Add `:show imports` to completion table
use prompt2 in `:set +m` mode
Add final remaining bits to fix #7978.
Temporarily disable common block elimination; fixes #8083 for now