Gentoo Archives: gentoo-commits

From: Sergei Trofimovich <slyfox@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-haskell/bits-atomic/, dev-haskell/bits-atomic/files/
Date: Sat, 03 Jun 2017 22:09:09
Message-Id: 1496527727.7e8590b6f6294628cefcd76f7b946710a1a4a05b.slyfox@gentoo
1 commit: 7e8590b6f6294628cefcd76f7b946710a1a4a05b
2 Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
3 AuthorDate: Sat Jun 3 22:07:03 2017 +0000
4 Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
5 CommitDate: Sat Jun 3 22:08:47 2017 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7e8590b6
7
8 dev-haskell/bits-atomic: move 30K patch over to DISTDIR, bug #620554
9
10 Reported-by: Michał Górny
11 Bug: https://bugs.gentoo.org/620554
12 Package-Manager: Portage-2.3.6, Repoman-2.3.2
13
14 dev-haskell/bits-atomic/Manifest | 1 +
15 .../bits-atomic/bits-atomic-0.1.3-r1.ebuild | 7 +-
16 .../files/bits-atomic-0.1.3-gcc-5.patch | 610 ---------------------
17 3 files changed, 5 insertions(+), 613 deletions(-)
18
19 diff --git a/dev-haskell/bits-atomic/Manifest b/dev-haskell/bits-atomic/Manifest
20 index 9c9e96e1f9f..2a704770099 100644
21 --- a/dev-haskell/bits-atomic/Manifest
22 +++ b/dev-haskell/bits-atomic/Manifest
23 @@ -1 +1,2 @@
24 +DIST bits-atomic-0.1.3-gcc-5.patch 30907 SHA256 36fc94f29e45c5df056ffaae6b049f727ffeb6bff3463752f656aeffb027cd89 SHA512 0a40015f225325db3716ac0a17e33eef3f2042b72f933000a52734b103ea3e316a0242a0b75c90a31d0d4c31d33da8d32b07f7c067d79ade51df66ea75a3b19c WHIRLPOOL fe8c13afbfac29d80dc11adb1269bca47f2f241778c8b8ea67516194e90a48059e946d246e0432fdf5cc091a8e8646d9a12e643fd18bc8870523d79b9ed333e1
25 DIST bits-atomic-0.1.3.tar.gz 7982 SHA256 e0ac3456cf0338e1d5ed33f4c3c6b932d652add2ac827c6a1b6636c6e754cb8d SHA512 e13c21c81ebc6cce2f85a184a572eb1647439f605985a8344ff219cc685c7d0adcf5d2433ea75fa1560a807e329cab23b548435adc0087e6294417eb7a65fbf1 WHIRLPOOL 3c15101610d87f202b910c60f9b875623661872bc91c8ae084e720f94633392b1338df3ee9d8eb3bd104e3c9c0d7dd949ead3a8f28be65e6a9f6458fda620a08
26
27 diff --git a/dev-haskell/bits-atomic/bits-atomic-0.1.3-r1.ebuild b/dev-haskell/bits-atomic/bits-atomic-0.1.3-r1.ebuild
28 index e29ee53ddae..59e62513134 100644
29 --- a/dev-haskell/bits-atomic/bits-atomic-0.1.3-r1.ebuild
30 +++ b/dev-haskell/bits-atomic/bits-atomic-0.1.3-r1.ebuild
31 @@ -1,4 +1,4 @@
32 -# Copyright 1999-2016 Gentoo Foundation
33 +# Copyright 1999-2017 Gentoo Foundation
34 # Distributed under the terms of the GNU General Public License v2
35
36 EAPI=5
37 @@ -10,7 +10,8 @@ inherit haskell-cabal
38
39 DESCRIPTION="Atomic bit operations on memory locations for low-level synchronization"
40 HOMEPAGE="http://hackage.haskell.org/package/bits-atomic"
41 -SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz"
42 +SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz
43 + https://dev.gentoo.org/~slyfox/patches/${P}-gcc-5.patch"
44
45 LICENSE="BSD"
46 SLOT="0/${PV}"
47 @@ -29,6 +30,6 @@ DEPEND="${RDEPEND}
48 "
49
50 src_prepare() {
51 - epatch "${FILESDIR}"/${P}-gcc-5.patch
52 + epatch "${DISTDIR}"/${P}-gcc-5.patch
53 epatch "${FILESDIR}"/${P}-ghc-8.patch
54 }
55
56 diff --git a/dev-haskell/bits-atomic/files/bits-atomic-0.1.3-gcc-5.patch b/dev-haskell/bits-atomic/files/bits-atomic-0.1.3-gcc-5.patch
57 deleted file mode 100644
58 index a500862f618..00000000000
59 --- a/dev-haskell/bits-atomic/files/bits-atomic-0.1.3-gcc-5.patch
60 +++ /dev/null
61 @@ -1,610 +0,0 @@
62 -diff --git a/Setup.hs b/Setup.hs
63 -index 46f5022..36c3aa9 100644
64 ---- a/Setup.hs
65 -+++ b/Setup.hs
66 -@@ -1,19 +1,7 @@
67 --{-# LANGUAGE CPP #-}
68 --import Distribution.Simple
69 --import Distribution.PackageDescription
70 --import Distribution.Simple.LocalBuildInfo(LocalBuildInfo, buildDir)
71 --import System.Cmd(system)
72 --
73 --ps :: String
74 --#if mingw32_HOST_OS || mingw32_TARGET_OS
75 --ps = ['\\']
76 --#else
77 --ps = ['/']
78 --#endif
79 -+#!/usr/bin/runhaskell
80 -+module Main where
81 -
82 --main = defaultMainWithHooks hooks
83 -- where hooks = simpleUserHooks { runTests = runTests' }
84 -+import Distribution.Simple
85 -
86 --runTests' :: Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()
87 --runTests' _ _ _ lbi = system testprog >> return ()
88 -- where testprog = (buildDir lbi) ++ ps ++ "test" ++ ps ++ "test"
89 -+main :: IO ()
90 -+main = defaultMain
91 -diff --git a/bits-atomic.cabal b/bits-atomic.cabal
92 -index 68da7f7..97b513f 100644
93 ---- a/bits-atomic.cabal
94 -+++ b/bits-atomic.cabal
95 -@@ -43,3 +43,3 @@ Stability: experimental
96 - Build-Type: Custom
97 --Cabal-Version: >= 1.6
98 -+Cabal-Version: >= 1.8
99 - Extra-Source-Files: cbits/atomic-bitops-gcc.c cbits/atomic-bitops-gcc.h
100 -@@ -64,11 +64,6 @@ library
101 -
102 --flag test
103 -- description: Build test program.
104 -- default: False
105 --
106 --Executable test
107 -- if flag(test)
108 -- buildable: True
109 -- build-depends:
110 -- base >= 4 && < 6,
111 -+test-suite test
112 -+ Type: exitcode-stdio-1.0
113 -+ build-depends: bits-atomic,
114 -+ base >= 4 && < 6,
115 - QuickCheck,
116 -@@ -78,6 +73,4 @@ Executable test
117 - test-framework
118 -- else
119 -- buildable: False
120 -- hs-source-dirs: ., test
121 -- other-modules: Data.Bits.Atomic
122 -+
123 -+ hs-source-dirs: test
124 - main-is: test.hs
125 -@@ -85,4 +78 @@ Executable test
126 - GHC-Prof-Options: -auto-all
127 --
128 -- Include-Dirs: cbits
129 -- C-Sources: cbits/atomic-bitops-gcc.c
130 -diff --git a/cbits/atomic-bitops-gcc.c b/cbits/atomic-bitops-gcc.c
131 -index 3f9d4ef..96ed076 100644
132 ---- a/cbits/atomic-bitops-gcc.c
133 -+++ b/cbits/atomic-bitops-gcc.c
134 -@@ -5,39 +5,39 @@ void mem_barrier (void) {return __sync_synchronize ();}
135 - /* 8-bit */
136 --inline unsigned char fetch_and_add_8 (unsigned char *p, unsigned char v) {
137 -+unsigned char fetch_and_add_8 (unsigned char *p, unsigned char v) {
138 - return __sync_fetch_and_add (p, v);
139 - }
140 --inline unsigned char fetch_and_sub_8 (unsigned char *p, unsigned char v) {
141 -+unsigned char fetch_and_sub_8 (unsigned char *p, unsigned char v) {
142 - return __sync_fetch_and_sub (p, v);
143 - }
144 --inline unsigned char fetch_and_or_8 (unsigned char *p, unsigned char v) {
145 -+unsigned char fetch_and_or_8 (unsigned char *p, unsigned char v) {
146 - return __sync_fetch_and_or (p, v);
147 - }
148 --inline unsigned char fetch_and_and_8 (unsigned char *p, unsigned char v) {
149 -+unsigned char fetch_and_and_8 (unsigned char *p, unsigned char v) {
150 - return __sync_fetch_and_and (p, v);
151 - }
152 --inline unsigned char fetch_and_xor_8 (unsigned char *p, unsigned char v) {
153 -+unsigned char fetch_and_xor_8 (unsigned char *p, unsigned char v) {
154 - return __sync_fetch_and_xor (p, v);
155 - }
156 --inline unsigned char fetch_and_nand_8 (unsigned char *p, unsigned char v) {
157 -+unsigned char fetch_and_nand_8 (unsigned char *p, unsigned char v) {
158 - return __sync_fetch_and_nand (p, v);
159 - }
160 --inline unsigned char add_and_fetch_8 (unsigned char *p, unsigned char v) {
161 -+unsigned char add_and_fetch_8 (unsigned char *p, unsigned char v) {
162 - return __sync_add_and_fetch (p, v);
163 - }
164 --inline unsigned char sub_and_fetch_8 (unsigned char *p, unsigned char v) {
165 -+unsigned char sub_and_fetch_8 (unsigned char *p, unsigned char v) {
166 - return __sync_sub_and_fetch (p, v);
167 - }
168 --inline unsigned char or_and_fetch_8 (unsigned char *p, unsigned char v) {
169 -+unsigned char or_and_fetch_8 (unsigned char *p, unsigned char v) {
170 - return __sync_or_and_fetch (p, v);
171 - }
172 --inline unsigned char and_and_fetch_8 (unsigned char *p, unsigned char v) {
173 -+unsigned char and_and_fetch_8 (unsigned char *p, unsigned char v) {
174 - return __sync_and_and_fetch (p, v);
175 - }
176 --inline unsigned char xor_and_fetch_8 (unsigned char *p, unsigned char v) {
177 -+unsigned char xor_and_fetch_8 (unsigned char *p, unsigned char v) {
178 - return __sync_xor_and_fetch (p, v);
179 - }
180 --inline unsigned char nand_and_fetch_8 (unsigned char *p, unsigned char v) {
181 -+unsigned char nand_and_fetch_8 (unsigned char *p, unsigned char v) {
182 - return __sync_nand_and_fetch (p, v);
183 - }
184 --inline unsigned int
185 -+unsigned int
186 - bool_compare_and_swap_8 (unsigned char *p, unsigned char old, unsigned char new) {
187 -@@ -45,3 +45,3 @@ bool_compare_and_swap_8 (unsigned char *p, unsigned char old, unsigned char new)
188 - }
189 --inline unsigned char
190 -+unsigned char
191 - val_compare_and_swap_8 (unsigned char *p, unsigned char old, unsigned char new) {
192 -@@ -49,3 +49,3 @@ val_compare_and_swap_8 (unsigned char *p, unsigned char old, unsigned char new)
193 - }
194 --inline unsigned char lock_test_and_set_8 (unsigned char *p) {
195 -+unsigned char lock_test_and_set_8 (unsigned char *p) {
196 - // Only immediate 0/1 appear to be widely supported, so hardcode it
197 -@@ -60,39 +60,39 @@ void lock_release_8 (unsigned char *p) {
198 - /* 16-bit */
199 --inline unsigned short fetch_and_add_16 (unsigned short *p, unsigned short v) {
200 -+unsigned short fetch_and_add_16 (unsigned short *p, unsigned short v) {
201 - return __sync_fetch_and_add (p, v);
202 - }
203 --inline unsigned short fetch_and_sub_16 (unsigned short *p, unsigned short v) {
204 -+unsigned short fetch_and_sub_16 (unsigned short *p, unsigned short v) {
205 - return __sync_fetch_and_sub (p, v);
206 - }
207 --inline unsigned short fetch_and_or_16 (unsigned short *p, unsigned short v) {
208 -+unsigned short fetch_and_or_16 (unsigned short *p, unsigned short v) {
209 - return __sync_fetch_and_or (p, v);
210 - }
211 --inline unsigned short fetch_and_and_16 (unsigned short *p, unsigned short v) {
212 -+unsigned short fetch_and_and_16 (unsigned short *p, unsigned short v) {
213 - return __sync_fetch_and_and (p, v);
214 - }
215 --inline unsigned short fetch_and_xor_16 (unsigned short *p, unsigned short v) {
216 -+unsigned short fetch_and_xor_16 (unsigned short *p, unsigned short v) {
217 - return __sync_fetch_and_xor (p, v);
218 - }
219 --inline unsigned short fetch_and_nand_16 (unsigned short *p, unsigned short v) {
220 -+unsigned short fetch_and_nand_16 (unsigned short *p, unsigned short v) {
221 - return __sync_fetch_and_nand (p, v);
222 - }
223 --inline unsigned short add_and_fetch_16 (unsigned short *p, unsigned short v) {
224 -+unsigned short add_and_fetch_16 (unsigned short *p, unsigned short v) {
225 - return __sync_add_and_fetch (p, v);
226 - }
227 --inline unsigned short sub_and_fetch_16 (unsigned short *p, unsigned short v) {
228 -+unsigned short sub_and_fetch_16 (unsigned short *p, unsigned short v) {
229 - return __sync_sub_and_fetch (p, v);
230 - }
231 --inline unsigned short or_and_fetch_16 (unsigned short *p, unsigned short v) {
232 -+unsigned short or_and_fetch_16 (unsigned short *p, unsigned short v) {
233 - return __sync_or_and_fetch (p, v);
234 - }
235 --inline unsigned short and_and_fetch_16 (unsigned short *p, unsigned short v) {
236 -+unsigned short and_and_fetch_16 (unsigned short *p, unsigned short v) {
237 - return __sync_and_and_fetch (p, v);
238 - }
239 --inline unsigned short xor_and_fetch_16 (unsigned short *p, unsigned short v) {
240 -+unsigned short xor_and_fetch_16 (unsigned short *p, unsigned short v) {
241 - return __sync_xor_and_fetch (p, v);
242 - }
243 --inline unsigned short nand_and_fetch_16 (unsigned short *p, unsigned short v) {
244 -+unsigned short nand_and_fetch_16 (unsigned short *p, unsigned short v) {
245 - return __sync_nand_and_fetch (p, v);
246 - }
247 --inline unsigned int
248 -+unsigned int
249 - bool_compare_and_swap_16 (unsigned short *p, unsigned short old, unsigned short new) {
250 -@@ -100,3 +100,3 @@ bool_compare_and_swap_16 (unsigned short *p, unsigned short old, unsigned short
251 - }
252 --inline unsigned short
253 -+unsigned short
254 - val_compare_and_swap_16 (unsigned short *p, unsigned short old, unsigned short new) {
255 -@@ -104,3 +104,3 @@ val_compare_and_swap_16 (unsigned short *p, unsigned short old, unsigned short n
256 - }
257 --inline unsigned short lock_test_and_set_16 (unsigned short *p) {
258 -+unsigned short lock_test_and_set_16 (unsigned short *p) {
259 - // Only immediate 0/1 appear to be widely supported, so hardcode it
260 -@@ -115,39 +115,39 @@ void lock_release_16 (unsigned short *p) {
261 - /* 32-bit */
262 --inline unsigned int fetch_and_add_32 (unsigned int *p, unsigned int v) {
263 -+unsigned int fetch_and_add_32 (unsigned int *p, unsigned int v) {
264 - return __sync_fetch_and_add (p, v);
265 - }
266 --inline unsigned int fetch_and_sub_32 (unsigned int *p, unsigned int v) {
267 -+unsigned int fetch_and_sub_32 (unsigned int *p, unsigned int v) {
268 - return __sync_fetch_and_sub (p, v);
269 - }
270 --inline unsigned int fetch_and_or_32 (unsigned int *p, unsigned int v) {
271 -+unsigned int fetch_and_or_32 (unsigned int *p, unsigned int v) {
272 - return __sync_fetch_and_or (p, v);
273 - }
274 --inline unsigned int fetch_and_and_32 (unsigned int *p, unsigned int v) {
275 -+unsigned int fetch_and_and_32 (unsigned int *p, unsigned int v) {
276 - return __sync_fetch_and_and (p, v);
277 - }
278 --inline unsigned int fetch_and_xor_32 (unsigned int *p, unsigned int v) {
279 -+unsigned int fetch_and_xor_32 (unsigned int *p, unsigned int v) {
280 - return __sync_fetch_and_xor (p, v);
281 - }
282 --inline unsigned int fetch_and_nand_32 (unsigned int *p, unsigned int v) {
283 -+unsigned int fetch_and_nand_32 (unsigned int *p, unsigned int v) {
284 - return __sync_fetch_and_nand (p, v);
285 - }
286 --inline unsigned int add_and_fetch_32 (unsigned int *p, unsigned int v) {
287 -+unsigned int add_and_fetch_32 (unsigned int *p, unsigned int v) {
288 - return __sync_add_and_fetch (p, v);
289 - }
290 --inline unsigned int sub_and_fetch_32 (unsigned int *p, unsigned int v) {
291 -+unsigned int sub_and_fetch_32 (unsigned int *p, unsigned int v) {
292 - return __sync_sub_and_fetch (p, v);
293 - }
294 --inline unsigned int or_and_fetch_32 (unsigned int *p, unsigned int v) {
295 -+unsigned int or_and_fetch_32 (unsigned int *p, unsigned int v) {
296 - return __sync_or_and_fetch (p, v);
297 - }
298 --inline unsigned int and_and_fetch_32 (unsigned int *p, unsigned int v) {
299 -+unsigned int and_and_fetch_32 (unsigned int *p, unsigned int v) {
300 - return __sync_and_and_fetch (p, v);
301 - }
302 --inline unsigned int xor_and_fetch_32 (unsigned int *p, unsigned int v) {
303 -+unsigned int xor_and_fetch_32 (unsigned int *p, unsigned int v) {
304 - return __sync_xor_and_fetch (p, v);
305 - }
306 --inline unsigned int nand_and_fetch_32 (unsigned int *p, unsigned int v) {
307 -+unsigned int nand_and_fetch_32 (unsigned int *p, unsigned int v) {
308 - return __sync_nand_and_fetch (p, v);
309 - }
310 --inline unsigned int
311 -+unsigned int
312 - bool_compare_and_swap_32 (unsigned int *p, unsigned int old, unsigned int new) {
313 -@@ -155,3 +155,3 @@ bool_compare_and_swap_32 (unsigned int *p, unsigned int old, unsigned int new) {
314 - }
315 --inline unsigned int
316 -+unsigned int
317 - val_compare_and_swap_32 (unsigned int *p, unsigned int old, unsigned int new) {
318 -@@ -159,3 +159,3 @@ val_compare_and_swap_32 (unsigned int *p, unsigned int old, unsigned int new) {
319 - }
320 --inline unsigned int lock_test_and_set_32 (unsigned int *p) {
321 -+unsigned int lock_test_and_set_32 (unsigned int *p) {
322 - // Only immediate 0/1 appear to be widely supported, so hardcode it
323 -@@ -170,39 +170,39 @@ void lock_release_32 (unsigned int *p) {
324 - /* 64-bit */
325 --inline unsigned long long fetch_and_add_64 (unsigned long long *p, unsigned long long v) {
326 -+unsigned long long fetch_and_add_64 (unsigned long long *p, unsigned long long v) {
327 - return __sync_fetch_and_add (p, v);
328 - }
329 --inline unsigned long long fetch_and_sub_64 (unsigned long long *p, unsigned long long v) {
330 -+unsigned long long fetch_and_sub_64 (unsigned long long *p, unsigned long long v) {
331 - return __sync_fetch_and_sub (p, v);
332 - }
333 --inline unsigned long long fetch_and_or_64 (unsigned long long *p, unsigned long long v) {
334 -+unsigned long long fetch_and_or_64 (unsigned long long *p, unsigned long long v) {
335 - return __sync_fetch_and_or (p, v);
336 - }
337 --inline unsigned long long fetch_and_and_64 (unsigned long long *p, unsigned long long v) {
338 -+unsigned long long fetch_and_and_64 (unsigned long long *p, unsigned long long v) {
339 - return __sync_fetch_and_and (p, v);
340 - }
341 --inline unsigned long long fetch_and_xor_64 (unsigned long long *p, unsigned long long v) {
342 -+unsigned long long fetch_and_xor_64 (unsigned long long *p, unsigned long long v) {
343 - return __sync_fetch_and_xor (p, v);
344 - }
345 --inline unsigned long long fetch_and_nand_64 (unsigned long long *p, unsigned long long v) {
346 -+unsigned long long fetch_and_nand_64 (unsigned long long *p, unsigned long long v) {
347 - return __sync_fetch_and_nand (p, v);
348 - }
349 --inline unsigned long long add_and_fetch_64 (unsigned long long *p, unsigned long long v) {
350 -+unsigned long long add_and_fetch_64 (unsigned long long *p, unsigned long long v) {
351 - return __sync_add_and_fetch (p, v);
352 - }
353 --inline unsigned long long sub_and_fetch_64 (unsigned long long *p, unsigned long long v) {
354 -+unsigned long long sub_and_fetch_64 (unsigned long long *p, unsigned long long v) {
355 - return __sync_sub_and_fetch (p, v);
356 - }
357 --inline unsigned long long or_and_fetch_64 (unsigned long long *p, unsigned long long v) {
358 -+unsigned long long or_and_fetch_64 (unsigned long long *p, unsigned long long v) {
359 - return __sync_or_and_fetch (p, v);
360 - }
361 --inline unsigned long long and_and_fetch_64 (unsigned long long *p, unsigned long long v) {
362 -+unsigned long long and_and_fetch_64 (unsigned long long *p, unsigned long long v) {
363 - return __sync_and_and_fetch (p, v);
364 - }
365 --inline unsigned long long xor_and_fetch_64 (unsigned long long *p, unsigned long long v) {
366 -+unsigned long long xor_and_fetch_64 (unsigned long long *p, unsigned long long v) {
367 - return __sync_xor_and_fetch (p, v);
368 - }
369 --inline unsigned long long nand_and_fetch_64 (unsigned long long *p, unsigned long long v) {
370 -+unsigned long long nand_and_fetch_64 (unsigned long long *p, unsigned long long v) {
371 - return __sync_nand_and_fetch (p, v);
372 - }
373 --inline unsigned int
374 -+unsigned int
375 - bool_compare_and_swap_64 (unsigned long long *p, unsigned long long old, unsigned long long new) {
376 -@@ -210,3 +210,3 @@ bool_compare_and_swap_64 (unsigned long long *p, unsigned long long old, unsigne
377 - }
378 --inline unsigned long long
379 -+unsigned long long
380 - val_compare_and_swap_64 (unsigned long long *p, unsigned long long old, unsigned long long new) {
381 -@@ -214,3 +214,3 @@ val_compare_and_swap_64 (unsigned long long *p, unsigned long long old, unsigned
382 - }
383 --inline unsigned long long lock_test_and_set_64 (unsigned long long *p) {
384 -+unsigned long long lock_test_and_set_64 (unsigned long long *p) {
385 - // Only immediate 0/1 appear to be widely supported, so hardcode it
386 -@@ -225,39 +225,39 @@ void lock_release_64 (unsigned long long *p) {
387 - /* Word-sized */
388 --inline unsigned long fetch_and_add_word (unsigned long *p, unsigned long v) {
389 -+unsigned long fetch_and_add_word (unsigned long *p, unsigned long v) {
390 - return __sync_fetch_and_add (p, v);
391 - }
392 --inline unsigned long fetch_and_sub_word (unsigned long *p, unsigned long v) {
393 -+unsigned long fetch_and_sub_word (unsigned long *p, unsigned long v) {
394 - return __sync_fetch_and_sub (p, v);
395 - }
396 --inline unsigned long fetch_and_or_word (unsigned long *p, unsigned long v) {
397 -+unsigned long fetch_and_or_word (unsigned long *p, unsigned long v) {
398 - return __sync_fetch_and_or (p, v);
399 - }
400 --inline unsigned long fetch_and_and_word (unsigned long *p, unsigned long v) {
401 -+unsigned long fetch_and_and_word (unsigned long *p, unsigned long v) {
402 - return __sync_fetch_and_and (p, v);
403 - }
404 --inline unsigned long fetch_and_xor_word (unsigned long *p, unsigned long v) {
405 -+unsigned long fetch_and_xor_word (unsigned long *p, unsigned long v) {
406 - return __sync_fetch_and_xor (p, v);
407 - }
408 --inline unsigned long fetch_and_nand_word (unsigned long *p, unsigned long v) {
409 -+unsigned long fetch_and_nand_word (unsigned long *p, unsigned long v) {
410 - return __sync_fetch_and_nand (p, v);
411 - }
412 --inline unsigned long add_and_fetch_word (unsigned long *p, unsigned long v) {
413 -+unsigned long add_and_fetch_word (unsigned long *p, unsigned long v) {
414 - return __sync_add_and_fetch (p, v);
415 - }
416 --inline unsigned long sub_and_fetch_word (unsigned long *p, unsigned long v) {
417 -+unsigned long sub_and_fetch_word (unsigned long *p, unsigned long v) {
418 - return __sync_sub_and_fetch (p, v);
419 - }
420 --inline unsigned long or_and_fetch_word (unsigned long *p, unsigned long v) {
421 -+unsigned long or_and_fetch_word (unsigned long *p, unsigned long v) {
422 - return __sync_or_and_fetch (p, v);
423 - }
424 --inline unsigned long and_and_fetch_word (unsigned long *p, unsigned long v) {
425 -+unsigned long and_and_fetch_word (unsigned long *p, unsigned long v) {
426 - return __sync_and_and_fetch (p, v);
427 - }
428 --inline unsigned long xor_and_fetch_word (unsigned long *p, unsigned long v) {
429 -+unsigned long xor_and_fetch_word (unsigned long *p, unsigned long v) {
430 - return __sync_xor_and_fetch (p, v);
431 - }
432 --inline unsigned long nand_and_fetch_word (unsigned long *p, unsigned long v) {
433 -+unsigned long nand_and_fetch_word (unsigned long *p, unsigned long v) {
434 - return __sync_nand_and_fetch (p, v);
435 - }
436 --inline unsigned int
437 -+unsigned int
438 - bool_compare_and_swap_word (unsigned long *p, unsigned long old, unsigned long new) {
439 -@@ -265,3 +265,3 @@ bool_compare_and_swap_word (unsigned long *p, unsigned long old, unsigned long n
440 - }
441 --inline unsigned long
442 -+unsigned long
443 - val_compare_and_swap_word (unsigned long *p, unsigned long old, unsigned long new) {
444 -@@ -269,3 +269,3 @@ val_compare_and_swap_word (unsigned long *p, unsigned long old, unsigned long ne
445 - }
446 --inline unsigned long lock_test_and_set_word (unsigned long *p) {
447 -+unsigned long lock_test_and_set_word (unsigned long *p) {
448 - // Only immediate 0/1 appear to be widely supported, so hardcode it
449 -diff --git a/cbits/atomic-bitops-gcc.h b/cbits/atomic-bitops-gcc.h
450 -index f9eccc4..7e0ef15 100644
451 ---- a/cbits/atomic-bitops-gcc.h
452 -+++ b/cbits/atomic-bitops-gcc.h
453 -@@ -6,19 +6,19 @@ void mem_barrier (void);
454 - /* 8-bit */
455 --inline unsigned char fetch_and_add_8 (unsigned char *, unsigned char );
456 --inline unsigned char fetch_and_sub_8 (unsigned char *, unsigned char );
457 --inline unsigned char fetch_and_or_8 (unsigned char *, unsigned char );
458 --inline unsigned char fetch_and_and_8 (unsigned char *, unsigned char );
459 --inline unsigned char fetch_and_xor_8 (unsigned char *, unsigned char );
460 --inline unsigned char fetch_and_nand_8 (unsigned char *, unsigned char );
461 --inline unsigned char add_and_fetch_8 (unsigned char *, unsigned char );
462 --inline unsigned char sub_and_fetch_8 (unsigned char *, unsigned char );
463 --inline unsigned char or_and_fetch_8 (unsigned char *, unsigned char );
464 --inline unsigned char and_and_fetch_8 (unsigned char *, unsigned char );
465 --inline unsigned char xor_and_fetch_8 (unsigned char *, unsigned char );
466 --inline unsigned char nand_and_fetch_8 (unsigned char *, unsigned char );
467 --inline unsigned int
468 -+unsigned char fetch_and_add_8 (unsigned char *, unsigned char );
469 -+unsigned char fetch_and_sub_8 (unsigned char *, unsigned char );
470 -+unsigned char fetch_and_or_8 (unsigned char *, unsigned char );
471 -+unsigned char fetch_and_and_8 (unsigned char *, unsigned char );
472 -+unsigned char fetch_and_xor_8 (unsigned char *, unsigned char );
473 -+unsigned char fetch_and_nand_8 (unsigned char *, unsigned char );
474 -+unsigned char add_and_fetch_8 (unsigned char *, unsigned char );
475 -+unsigned char sub_and_fetch_8 (unsigned char *, unsigned char );
476 -+unsigned char or_and_fetch_8 (unsigned char *, unsigned char );
477 -+unsigned char and_and_fetch_8 (unsigned char *, unsigned char );
478 -+unsigned char xor_and_fetch_8 (unsigned char *, unsigned char );
479 -+unsigned char nand_and_fetch_8 (unsigned char *, unsigned char );
480 -+unsigned int
481 - bool_compare_and_swap_8 (unsigned char *, unsigned char, unsigned char);
482 --inline unsigned char
483 -+unsigned char
484 - val_compare_and_swap_8 (unsigned char *, unsigned char , unsigned char);
485 --inline unsigned char lock_test_and_set_8 (unsigned char *);
486 -+unsigned char lock_test_and_set_8 (unsigned char *);
487 - void lock_release_8 (unsigned char *);
488 -@@ -26,19 +26,19 @@ void lock_release_8 (unsigned char *);
489 - /* 16-bit */
490 --inline unsigned short fetch_and_add_16 (unsigned short *, unsigned short );
491 --inline unsigned short fetch_and_sub_16 (unsigned short *, unsigned short );
492 --inline unsigned short fetch_and_or_16 (unsigned short *, unsigned short );
493 --inline unsigned short fetch_and_and_16 (unsigned short *, unsigned short );
494 --inline unsigned short fetch_and_xor_16 (unsigned short *, unsigned short );
495 --inline unsigned short fetch_and_nand_16 (unsigned short *, unsigned short );
496 --inline unsigned short add_and_fetch_16 (unsigned short *, unsigned short );
497 --inline unsigned short sub_and_fetch_16 (unsigned short *, unsigned short );
498 --inline unsigned short or_and_fetch_16 (unsigned short *, unsigned short );
499 --inline unsigned short and_and_fetch_16 (unsigned short *, unsigned short );
500 --inline unsigned short xor_and_fetch_16 (unsigned short *, unsigned short );
501 --inline unsigned short nand_and_fetch_16 (unsigned short *, unsigned short );
502 --inline unsigned int
503 -+unsigned short fetch_and_add_16 (unsigned short *, unsigned short );
504 -+unsigned short fetch_and_sub_16 (unsigned short *, unsigned short );
505 -+unsigned short fetch_and_or_16 (unsigned short *, unsigned short );
506 -+unsigned short fetch_and_and_16 (unsigned short *, unsigned short );
507 -+unsigned short fetch_and_xor_16 (unsigned short *, unsigned short );
508 -+unsigned short fetch_and_nand_16 (unsigned short *, unsigned short );
509 -+unsigned short add_and_fetch_16 (unsigned short *, unsigned short );
510 -+unsigned short sub_and_fetch_16 (unsigned short *, unsigned short );
511 -+unsigned short or_and_fetch_16 (unsigned short *, unsigned short );
512 -+unsigned short and_and_fetch_16 (unsigned short *, unsigned short );
513 -+unsigned short xor_and_fetch_16 (unsigned short *, unsigned short );
514 -+unsigned short nand_and_fetch_16 (unsigned short *, unsigned short );
515 -+unsigned int
516 - bool_compare_and_swap_16 (unsigned short *, unsigned short , unsigned short );
517 --inline unsigned short
518 -+unsigned short
519 - val_compare_and_swap_16 (unsigned short *, unsigned short , unsigned short );
520 --inline unsigned short lock_test_and_set_16 (unsigned short *);
521 -+unsigned short lock_test_and_set_16 (unsigned short *);
522 - void lock_release_16 (unsigned short *);
523 -@@ -47,19 +47,19 @@ void lock_release_16 (unsigned short *);
524 - /* 32-bit */
525 --inline unsigned int fetch_and_add_32 (unsigned int *, unsigned int );
526 --inline unsigned int fetch_and_sub_32 (unsigned int *, unsigned int );
527 --inline unsigned int fetch_and_or_32 (unsigned int *, unsigned int );
528 --inline unsigned int fetch_and_and_32 (unsigned int *, unsigned int );
529 --inline unsigned int fetch_and_xor_32 (unsigned int *, unsigned int );
530 --inline unsigned int fetch_and_nand_32 (unsigned int *, unsigned int );
531 --inline unsigned int add_and_fetch_32 (unsigned int *, unsigned int );
532 --inline unsigned int sub_and_fetch_32 (unsigned int *, unsigned int );
533 --inline unsigned int or_and_fetch_32 (unsigned int *, unsigned int );
534 --inline unsigned int and_and_fetch_32 (unsigned int *, unsigned int );
535 --inline unsigned int xor_and_fetch_32 (unsigned int *, unsigned int );
536 --inline unsigned int nand_and_fetch_32 (unsigned int *, unsigned int );
537 --inline unsigned int
538 -+unsigned int fetch_and_add_32 (unsigned int *, unsigned int );
539 -+unsigned int fetch_and_sub_32 (unsigned int *, unsigned int );
540 -+unsigned int fetch_and_or_32 (unsigned int *, unsigned int );
541 -+unsigned int fetch_and_and_32 (unsigned int *, unsigned int );
542 -+unsigned int fetch_and_xor_32 (unsigned int *, unsigned int );
543 -+unsigned int fetch_and_nand_32 (unsigned int *, unsigned int );
544 -+unsigned int add_and_fetch_32 (unsigned int *, unsigned int );
545 -+unsigned int sub_and_fetch_32 (unsigned int *, unsigned int );
546 -+unsigned int or_and_fetch_32 (unsigned int *, unsigned int );
547 -+unsigned int and_and_fetch_32 (unsigned int *, unsigned int );
548 -+unsigned int xor_and_fetch_32 (unsigned int *, unsigned int );
549 -+unsigned int nand_and_fetch_32 (unsigned int *, unsigned int );
550 -+unsigned int
551 - bool_compare_and_swap_32 (unsigned int *, unsigned int , unsigned int );
552 --inline unsigned int
553 -+unsigned int
554 - val_compare_and_swap_32 (unsigned int *, unsigned int , unsigned int );
555 --inline unsigned int lock_test_and_set_32 (unsigned int *);
556 -+unsigned int lock_test_and_set_32 (unsigned int *);
557 - void lock_release_32 (unsigned int *);
558 -@@ -67,19 +67,19 @@ void lock_release_32 (unsigned int *);
559 - /* 64-bit */
560 --inline unsigned long long fetch_and_add_64 (unsigned long long *, unsigned long long );
561 --inline unsigned long long fetch_and_sub_64 (unsigned long long *, unsigned long long );
562 --inline unsigned long long fetch_and_or_64 (unsigned long long *, unsigned long long );
563 --inline unsigned long long fetch_and_and_64 (unsigned long long *, unsigned long long );
564 --inline unsigned long long fetch_and_xor_64 (unsigned long long *, unsigned long long );
565 --inline unsigned long long fetch_and_nand_64 (unsigned long long *, unsigned long long );
566 --inline unsigned long long add_and_fetch_64 (unsigned long long *, unsigned long long );
567 --inline unsigned long long sub_and_fetch_64 (unsigned long long *, unsigned long long );
568 --inline unsigned long long or_and_fetch_64 (unsigned long long *, unsigned long long );
569 --inline unsigned long long and_and_fetch_64 (unsigned long long *, unsigned long long );
570 --inline unsigned long long xor_and_fetch_64 (unsigned long long *, unsigned long long );
571 --inline unsigned long long nand_and_fetch_64 (unsigned long long *, unsigned long long );
572 --inline unsigned int
573 -+unsigned long long fetch_and_add_64 (unsigned long long *, unsigned long long );
574 -+unsigned long long fetch_and_sub_64 (unsigned long long *, unsigned long long );
575 -+unsigned long long fetch_and_or_64 (unsigned long long *, unsigned long long );
576 -+unsigned long long fetch_and_and_64 (unsigned long long *, unsigned long long );
577 -+unsigned long long fetch_and_xor_64 (unsigned long long *, unsigned long long );
578 -+unsigned long long fetch_and_nand_64 (unsigned long long *, unsigned long long );
579 -+unsigned long long add_and_fetch_64 (unsigned long long *, unsigned long long );
580 -+unsigned long long sub_and_fetch_64 (unsigned long long *, unsigned long long );
581 -+unsigned long long or_and_fetch_64 (unsigned long long *, unsigned long long );
582 -+unsigned long long and_and_fetch_64 (unsigned long long *, unsigned long long );
583 -+unsigned long long xor_and_fetch_64 (unsigned long long *, unsigned long long );
584 -+unsigned long long nand_and_fetch_64 (unsigned long long *, unsigned long long );
585 -+unsigned int
586 - bool_compare_and_swap_64 (unsigned long long *, unsigned long long , unsigned long long );
587 --inline unsigned long long
588 -+unsigned long long
589 - val_compare_and_swap_64 (unsigned long long *, unsigned long long , unsigned long long );
590 --inline unsigned long long lock_test_and_set_64 (unsigned long long *);
591 -+unsigned long long lock_test_and_set_64 (unsigned long long *);
592 - void lock_release_64 (unsigned long long *);
593 -@@ -87,19 +87,19 @@ void lock_release_64 (unsigned long long *);
594 - /* Word */
595 --inline unsigned long fetch_and_add_word (unsigned long *, unsigned long );
596 --inline unsigned long fetch_and_sub_word (unsigned long *, unsigned long );
597 --inline unsigned long fetch_and_or_word (unsigned long *, unsigned long );
598 --inline unsigned long fetch_and_and_word (unsigned long *, unsigned long );
599 --inline unsigned long fetch_and_xor_word (unsigned long *, unsigned long );
600 --inline unsigned long fetch_and_nand_word (unsigned long *, unsigned long );
601 --inline unsigned long add_and_fetch_word (unsigned long *, unsigned long );
602 --inline unsigned long sub_and_fetch_word (unsigned long *, unsigned long );
603 --inline unsigned long or_and_fetch_word (unsigned long *, unsigned long );
604 --inline unsigned long and_and_fetch_word (unsigned long *, unsigned long );
605 --inline unsigned long xor_and_fetch_word (unsigned long *, unsigned long );
606 --inline unsigned long nand_and_fetch_word (unsigned long *, unsigned long );
607 --inline unsigned int
608 -+unsigned long fetch_and_add_word (unsigned long *, unsigned long );
609 -+unsigned long fetch_and_sub_word (unsigned long *, unsigned long );
610 -+unsigned long fetch_and_or_word (unsigned long *, unsigned long );
611 -+unsigned long fetch_and_and_word (unsigned long *, unsigned long );
612 -+unsigned long fetch_and_xor_word (unsigned long *, unsigned long );
613 -+unsigned long fetch_and_nand_word (unsigned long *, unsigned long );
614 -+unsigned long add_and_fetch_word (unsigned long *, unsigned long );
615 -+unsigned long sub_and_fetch_word (unsigned long *, unsigned long );
616 -+unsigned long or_and_fetch_word (unsigned long *, unsigned long );
617 -+unsigned long and_and_fetch_word (unsigned long *, unsigned long );
618 -+unsigned long xor_and_fetch_word (unsigned long *, unsigned long );
619 -+unsigned long nand_and_fetch_word (unsigned long *, unsigned long );
620 -+unsigned int
621 - bool_compare_and_swap_word (unsigned long *, unsigned long , unsigned long );
622 --inline unsigned long
623 -+unsigned long
624 - val_compare_and_swap_word (unsigned long *, unsigned long , unsigned long );
625 --inline unsigned long lock_test_and_set_word (unsigned long *);
626 -+unsigned long lock_test_and_set_word (unsigned long *);
627 - void lock_release_word (unsigned long *);
628 -diff --git a/test/test.hs b/test/test.hs
629 -index 8cf3cb2..38238b5 100644
630 ---- a/test/test.hs
631 -+++ b/test/test.hs
632 -@@ -35,3 +35,3 @@ testPattern = 0xdeadbeef
633 -
634 --type PolyTest = (AtomicBits a, Storable a, Integral a, Bounded a) => a -> Assertion
635 -+type PolyTest = (AtomicBits a, Storable a, Integral a, Bounded a, Show a) => a -> Assertion
636 -
637 -@@ -50,3 +50,3 @@ testTypes _test = do
638 -
639 --test_compareAndSwap :: (AtomicBits a, Storable a, Integral a, Bounded a) =>
640 -+test_compareAndSwap :: (AtomicBits a, Storable a, Integral a, Bounded a, Show a) =>
641 - a -> Assertion
642 -@@ -65,3 +65,3 @@ test_compareAndSwap_all = testTypes test_compareAndSwap
643 -
644 --test_compareAndSwapBool :: (AtomicBits a, Storable a, Integral a, Bounded a) =>
645 -+test_compareAndSwapBool :: (AtomicBits a, Storable a, Integral a, Bounded a, Show a) =>
646 - a -> Assertion
647 -@@ -80,3 +80,3 @@ test_compareAndSwapBool_all = testTypes test_compareAndSwapBool
648 -
649 --test_fetchAndAdd :: (AtomicBits a, Storable a, Integral a, Bounded a) =>
650 -+test_fetchAndAdd :: (AtomicBits a, Storable a, Integral a, Bounded a, Show a) =>
651 - a -> Assertion
652 -@@ -98,3 +98,3 @@ test_fetchAndAdd_all = testTypes test_fetchAndAdd
653 -
654 --test_fetchAndSub :: (AtomicBits a, Storable a, Integral a, Bounded a) =>
655 -+test_fetchAndSub :: (AtomicBits a, Storable a, Integral a, Bounded a, Show a) =>
656 - a -> Assertion
657 -@@ -115,3 +115,3 @@ test_fetchAndSub_all = testTypes test_fetchAndSub
658 -
659 --test_fetchAndXor :: (AtomicBits a, Storable a, Integral a, Bounded a) =>
660 -+test_fetchAndXor :: (AtomicBits a, Storable a, Integral a, Bounded a, Show a) =>
661 - a -> Assertion
662 -@@ -127,3 +127,3 @@ test_fetchAndXor_all = testTypes test_fetchAndXor
663 -
664 --test_subAndFetch :: (AtomicBits a, Storable a, Integral a, Bounded a) =>
665 -+test_subAndFetch :: (AtomicBits a, Storable a, Integral a, Bounded a, Show a) =>
666 - a -> Assertion
667 -@@ -140,3 +140,3 @@ test_subAndFetch_all = testTypes test_subAndFetch
668 -
669 --test_lockTestRelease :: (AtomicBits a, Storable a, Integral a, Bounded a) =>
670 -+test_lockTestRelease :: (AtomicBits a, Storable a, Integral a, Bounded a, Show a) =>
671 - a -> Assertion