[Git][ghc/ghc][wip/T26166] rts: Drop redundant declarations
Ben Gamari pushed to branch wip/T26166 at Glasgow Haskell Compiler / GHC Commits: 2b16d5be by Ben Gamari at 2025-10-02T17:49:27-04:00 rts: Drop redundant declarations - - - - - 1 changed file: - rts/prim/atomic.c Changes: ===================================== rts/prim/atomic.c ===================================== @@ -12,90 +12,66 @@ // FetchAddByteArrayOp_Int -extern StgWord hs_atomic_add8(StgWord x, StgWord val); -StgWord -hs_atomic_add8(StgWord x, StgWord val) +StgWord hs_atomic_add8(StgWord x, StgWord val) { return __sync_fetch_and_add((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_add16(StgWord x, StgWord val); -StgWord -hs_atomic_add16(StgWord x, StgWord val) +StgWord hs_atomic_add16(StgWord x, StgWord val) { return __sync_fetch_and_add((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_add32(StgWord x, StgWord val); -StgWord -hs_atomic_add32(StgWord x, StgWord val) +StgWord hs_atomic_add32(StgWord x, StgWord val) { return __sync_fetch_and_add((volatile StgWord32 *) x, (StgWord32) val); } -extern StgWord64 hs_atomic_add64(StgWord x, StgWord64 val); -StgWord64 -hs_atomic_add64(StgWord x, StgWord64 val) +StgWord64 hs_atomic_add64(StgWord x, StgWord64 val) { return __sync_fetch_and_add((volatile StgWord64 *) x, val); } // FetchSubByteArrayOp_Int -extern StgWord hs_atomic_sub8(StgWord x, StgWord val); -StgWord -hs_atomic_sub8(StgWord x, StgWord val) +StgWord hs_atomic_sub8(StgWord x, StgWord val) { return __sync_fetch_and_sub((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_sub16(StgWord x, StgWord val); -StgWord -hs_atomic_sub16(StgWord x, StgWord val) +StgWord hs_atomic_sub16(StgWord x, StgWord val) { return __sync_fetch_and_sub((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_sub32(StgWord x, StgWord val); -StgWord -hs_atomic_sub32(StgWord x, StgWord val) +StgWord hs_atomic_sub32(StgWord x, StgWord val) { return __sync_fetch_and_sub((volatile StgWord32 *) x, (StgWord32) val); } -extern StgWord64 hs_atomic_sub64(StgWord x, StgWord64 val); -StgWord64 -hs_atomic_sub64(StgWord x, StgWord64 val) +StgWord64 hs_atomic_sub64(StgWord x, StgWord64 val) { return __sync_fetch_and_sub((volatile StgWord64 *) x, val); } // FetchAndByteArrayOp_Int -extern StgWord hs_atomic_and8(StgWord x, StgWord val); -StgWord -hs_atomic_and8(StgWord x, StgWord val) +StgWord hs_atomic_and8(StgWord x, StgWord val) { return __sync_fetch_and_and((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_and16(StgWord x, StgWord val); -StgWord -hs_atomic_and16(StgWord x, StgWord val) +StgWord hs_atomic_and16(StgWord x, StgWord val) { return __sync_fetch_and_and((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_and32(StgWord x, StgWord val); -StgWord -hs_atomic_and32(StgWord x, StgWord val) +StgWord hs_atomic_and32(StgWord x, StgWord val) { return __sync_fetch_and_and((volatile StgWord32 *) x, (StgWord32) val); } -extern StgWord64 hs_atomic_and64(StgWord x, StgWord64 val); -StgWord64 -hs_atomic_and64(StgWord x, StgWord64 val) +StgWord64 hs_atomic_and64(StgWord x, StgWord64 val) { return __sync_fetch_and_and((volatile StgWord64 *) x, val); } @@ -167,9 +143,7 @@ hs_atomic_and64(StgWord x, StgWord64 val) #pragma GCC diagnostic ignored "-Wsync-nand" #endif -extern StgWord hs_atomic_nand8(StgWord x, StgWord val); -StgWord -hs_atomic_nand8(StgWord x, StgWord val) +StgWord hs_atomic_nand8(StgWord x, StgWord val) { #if USE_SYNC_FETCH_AND_NAND return __sync_fetch_and_nand((volatile StgWord8 *) x, (StgWord8) val); @@ -178,9 +152,7 @@ hs_atomic_nand8(StgWord x, StgWord val) #endif } -extern StgWord hs_atomic_nand16(StgWord x, StgWord val); -StgWord -hs_atomic_nand16(StgWord x, StgWord val) +StgWord hs_atomic_nand16(StgWord x, StgWord val) { #if USE_SYNC_FETCH_AND_NAND return __sync_fetch_and_nand((volatile StgWord16 *) x, (StgWord16) val); @@ -189,9 +161,7 @@ hs_atomic_nand16(StgWord x, StgWord val) #endif } -extern StgWord hs_atomic_nand32(StgWord x, StgWord val); -StgWord -hs_atomic_nand32(StgWord x, StgWord val) +StgWord hs_atomic_nand32(StgWord x, StgWord val) { #if USE_SYNC_FETCH_AND_NAND return __sync_fetch_and_nand((volatile StgWord32 *) x, (StgWord32) val); @@ -200,9 +170,7 @@ hs_atomic_nand32(StgWord x, StgWord val) #endif } -extern StgWord64 hs_atomic_nand64(StgWord x, StgWord64 val); -StgWord64 -hs_atomic_nand64(StgWord x, StgWord64 val) +StgWord64 hs_atomic_nand64(StgWord x, StgWord64 val) { #if USE_SYNC_FETCH_AND_NAND return __sync_fetch_and_nand((volatile StgWord64 *) x, val); @@ -215,96 +183,72 @@ hs_atomic_nand64(StgWord x, StgWord64 val) // FetchOrByteArrayOp_Int -extern StgWord hs_atomic_or8(StgWord x, StgWord val); -StgWord -hs_atomic_or8(StgWord x, StgWord val) +StgWord hs_atomic_or8(StgWord x, StgWord val) { return __sync_fetch_and_or((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_or16(StgWord x, StgWord val); -StgWord -hs_atomic_or16(StgWord x, StgWord val) +StgWord hs_atomic_or16(StgWord x, StgWord val) { return __sync_fetch_and_or((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_or32(StgWord x, StgWord val); -StgWord -hs_atomic_or32(StgWord x, StgWord val) +StgWord hs_atomic_or32(StgWord x, StgWord val) { return __sync_fetch_and_or((volatile StgWord32 *) x, (StgWord32) val); } -extern StgWord64 hs_atomic_or64(StgWord x, StgWord64 val); -StgWord64 -hs_atomic_or64(StgWord x, StgWord64 val) +StgWord64 hs_atomic_or64(StgWord x, StgWord64 val) { return __sync_fetch_and_or((volatile StgWord64 *) x, val); } // FetchXorByteArrayOp_Int -extern StgWord hs_atomic_xor8(StgWord x, StgWord val); -StgWord -hs_atomic_xor8(StgWord x, StgWord val) +StgWord hs_atomic_xor8(StgWord x, StgWord val) { return __sync_fetch_and_xor((volatile StgWord8 *) x, (StgWord8) val); } -extern StgWord hs_atomic_xor16(StgWord x, StgWord val); -StgWord -hs_atomic_xor16(StgWord x, StgWord val) +StgWord hs_atomic_xor16(StgWord x, StgWord val) { return __sync_fetch_and_xor((volatile StgWord16 *) x, (StgWord16) val); } -extern StgWord hs_atomic_xor32(StgWord x, StgWord val); -StgWord -hs_atomic_xor32(StgWord x, StgWord val) +StgWord hs_atomic_xor32(StgWord x, StgWord val) { return __sync_fetch_and_xor((volatile StgWord32 *) x, (StgWord32) val); } -extern StgWord64 hs_atomic_xor64(StgWord x, StgWord64 val); -StgWord64 -hs_atomic_xor64(StgWord x, StgWord64 val) +StgWord64 hs_atomic_xor64(StgWord x, StgWord64 val) { return __sync_fetch_and_xor((volatile StgWord64 *) x, val); } // CasByteArrayOp_Int -extern StgWord hs_cmpxchg8(StgWord x, StgWord old, StgWord new); -StgWord -hs_cmpxchg8(StgWord x, StgWord old, StgWord new) +StgWord hs_cmpxchg8(StgWord x, StgWord old, StgWord new) { StgWord8 expected = (StgWord8) old; __atomic_compare_exchange_n((StgWord8 *) x, &expected, (StgWord8) new, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); return expected; } -extern StgWord hs_cmpxchg16(StgWord x, StgWord old, StgWord new); -StgWord -hs_cmpxchg16(StgWord x, StgWord old, StgWord new) +StgWord hs_cmpxchg16(StgWord x, StgWord old, StgWord new) { StgWord16 expected = (StgWord16) old; __atomic_compare_exchange_n((StgWord16 *) x, &expected, (StgWord16) new, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); return expected; } -extern StgWord hs_cmpxchg32(StgWord x, StgWord old, StgWord new); -StgWord -hs_cmpxchg32(StgWord x, StgWord old, StgWord new) +StgWord hs_cmpxchg32(StgWord x, StgWord old, StgWord new) { StgWord32 expected = (StgWord32) old; __atomic_compare_exchange_n((StgWord32 *) x, &expected, (StgWord32) new, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); return expected; } -extern StgWord64 hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new); -StgWord64 -hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new) +StgWord64 hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new) { StgWord64 expected = (StgWord64) old; __atomic_compare_exchange_n((StgWord64 *) x, &expected, (StgWord64) new, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); @@ -313,31 +257,23 @@ hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new) // Atomic exchange operations -extern StgWord hs_xchg8(StgWord x, StgWord val); -StgWord -hs_xchg8(StgWord x, StgWord val) +StgWord hs_xchg8(StgWord x, StgWord val) { return (StgWord) __atomic_exchange_n((StgWord8 *) x, (StgWord8) val, __ATOMIC_SEQ_CST); } -extern StgWord hs_xchg16(StgWord x, StgWord val); -StgWord -hs_xchg16(StgWord x, StgWord val) +StgWord hs_xchg16(StgWord x, StgWord val) { return (StgWord) __atomic_exchange_n((StgWord16 *)x, (StgWord16) val, __ATOMIC_SEQ_CST); } -extern StgWord hs_xchg32(StgWord x, StgWord val); -StgWord -hs_xchg32(StgWord x, StgWord val) +StgWord hs_xchg32(StgWord x, StgWord val) { return (StgWord) __atomic_exchange_n((StgWord32 *) x, (StgWord32) val, __ATOMIC_SEQ_CST); } //GCC provides this even on 32bit, but StgWord is still 32 bits. -extern StgWord64 hs_xchg64(StgWord x, StgWord64 val); -StgWord64 -hs_xchg64(StgWord x, StgWord64 val) +StgWord64 hs_xchg64(StgWord x, StgWord64 val) { return (StgWord64) __atomic_exchange_n((StgWord64 *) x, (StgWord64) val, __ATOMIC_SEQ_CST); } @@ -352,30 +288,22 @@ hs_xchg64(StgWord x, StgWord64 val) // primitives which the GCC documentation claims "usually" implies a full // barrier. -extern StgWord hs_atomicread8(StgWord x); -StgWord -hs_atomicread8(StgWord x) +StgWord hs_atomicread8(StgWord x) { return __atomic_load_n((StgWord8 *) x, __ATOMIC_SEQ_CST); } -extern StgWord hs_atomicread16(StgWord x); -StgWord -hs_atomicread16(StgWord x) +StgWord hs_atomicread16(StgWord x) { return __atomic_load_n((StgWord16 *) x, __ATOMIC_SEQ_CST); } -extern StgWord hs_atomicread32(StgWord x); -StgWord -hs_atomicread32(StgWord x) +StgWord hs_atomicread32(StgWord x) { return __atomic_load_n((StgWord32 *) x, __ATOMIC_SEQ_CST); } -extern StgWord64 hs_atomicread64(StgWord x); -StgWord64 -hs_atomicread64(StgWord x) +StgWord64 hs_atomicread64(StgWord x) { return __atomic_load_n((StgWord64 *) x, __ATOMIC_SEQ_CST); } @@ -384,30 +312,22 @@ hs_atomicread64(StgWord x) // Implies a full memory barrier (see compiler/GHC/Builtin/primops.txt.pp) // __ATOMIC_SEQ_CST: Full barrier (see hs_atomicread8 above). -extern void hs_atomicwrite8(StgWord x, StgWord val); -void -hs_atomicwrite8(StgWord x, StgWord val) +void hs_atomicwrite8(StgWord x, StgWord val) { __atomic_store_n((StgWord8 *) x, (StgWord8) val, __ATOMIC_SEQ_CST); } -extern void hs_atomicwrite16(StgWord x, StgWord val); -void -hs_atomicwrite16(StgWord x, StgWord val) +void hs_atomicwrite16(StgWord x, StgWord val) { __atomic_store_n((StgWord16 *) x, (StgWord16) val, __ATOMIC_SEQ_CST); } -extern void hs_atomicwrite32(StgWord x, StgWord val); -void -hs_atomicwrite32(StgWord x, StgWord val) +void hs_atomicwrite32(StgWord x, StgWord val) { __atomic_store_n((StgWord32 *) x, (StgWord32) val, __ATOMIC_SEQ_CST); } -extern void hs_atomicwrite64(StgWord x, StgWord64 val); -void -hs_atomicwrite64(StgWord x, StgWord64 val) +void hs_atomicwrite64(StgWord x, StgWord64 val) { __atomic_store_n((StgWord64 *) x, (StgWord64) val, __ATOMIC_SEQ_CST); } View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/2b16d5be235cbcdbbd50947a01edfffe... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/2b16d5be235cbcdbbd50947a01edfffe... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Ben Gamari (@bgamari)