summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@well-typed.com>2022-12-21 17:23:25 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-12-24 00:42:16 -0500
commit63b97430e5bd476923cd0cd8a6c71b17a20e3c4b (patch)
tree8e90bff0c9beabac5b231227bad2b6862d68b96e
parentc264b06b4e77976939386a6d373d00118562c376 (diff)
downloadhaskell-63b97430e5bd476923cd0cd8a6c71b17a20e3c4b.tar.gz
llvmGen: Fix relaxed ordering
Previously I used LLVM's `unordered` ordering for the C11 `relaxed` ordering. However, this is wrong and should rather use the LLVM `monotonic` ordering. Fixes #22640
-rw-r--r--compiler/GHC/CmmToLlvm/CodeGen.hs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/GHC/CmmToLlvm/CodeGen.hs b/compiler/GHC/CmmToLlvm/CodeGen.hs
index 0ae89317f3..dbe623f85e 100644
--- a/compiler/GHC/CmmToLlvm/CodeGen.hs
+++ b/compiler/GHC/CmmToLlvm/CodeGen.hs
@@ -2030,7 +2030,7 @@ genLit _ CmmHighStackMark
--
convertMemoryOrdering :: MemoryOrdering -> LlvmSyncOrdering
-convertMemoryOrdering MemOrderRelaxed = SyncUnord
+convertMemoryOrdering MemOrderRelaxed = SyncMonotonic
convertMemoryOrdering MemOrderAcquire = SyncAcquire
convertMemoryOrdering MemOrderRelease = SyncRelease
convertMemoryOrdering MemOrderSeqCst = SyncSeqCst