Ivan Maidanski [Wed, 1 Mar 2017 22:50:24 +0000 (01:50 +0300)]
Fix missing .exe for test filenames in Makefile (MinGW)
(fix commits ad82960, 13a17dd, ecd43ca)
* tests/Makefile.am (TESTS, check-without-test-driver): Add $(EXEEXT)
suffix to each item (test).
* tests/Makefile.am (TEST_OBJS): Reorder items (to match the that of
TESTS).
* tests/Makefile.am (check_PROGRAMS): Specify all items explicitly (so
that to have all items without the suffix as before this change).
Ivan Maidanski [Mon, 27 Feb 2017 18:17:42 +0000 (21:17 +0300)]
Travis CI: Test also with gcc-4.2, gcc-4.6 cross-compilers
(avr32, cris, sh4, tilegx)
Ivan Maidanski [Mon, 27 Feb 2017 17:58:28 +0000 (20:58 +0300)]
Allow alternate CC (CROSS_CC) for AC_TRY_COMPILE (configure)
* configure.ac [GCC && CROSS_CC] (CC): Assign to CROSS_CC temporarily
(for AC_TRY_COMPILE); restore original value after last AC_TRY_COMPILE.
Ivan Maidanski [Wed, 22 Feb 2017 21:44:46 +0000 (00:44 +0300)]
Travis CI: Test also with other gcc-4.9 cross-compilers
(aarch64, alpha, hppa, ia64, m68k, mips[64], powerpc[64], s390x, sparc[64])
Ivan Maidanski [Wed, 22 Feb 2017 20:53:05 +0000 (23:53 +0300)]
Travis CI: Move CROSS_ prefix from NOLIBC_ARCH_ABI to GCC_VER variable
(code refactoring of commit a596be3)
Ivan Maidanski [Wed, 22 Feb 2017 15:37:50 +0000 (18:37 +0300)]
Travis CI: Reformat 'env' section (describe each configuration in a line)
(fix commits 641030c, ff3885c)
Ivan Maidanski [Wed, 22 Feb 2017 06:55:09 +0000 (09:55 +0300)]
Travis CI: Also test with ARM cross-compiler
Ivan Maidanski [Wed, 22 Feb 2017 06:45:48 +0000 (09:45 +0300)]
Travis CI: Move cppcheck to parent (home) folder
(fix commit ff3885c)
Ivan Maidanski [Tue, 21 Feb 2017 21:05:11 +0000 (00:05 +0300)]
Fix 'Cannot implement CAS_full on this architecture' build error (cris)
* src/atomic_ops.h [__cris__ || CRIS] (AO_CAN_EMUL_CAS): Define.
* src/atomic_ops/sysdeps/gcc/cris.h: Add TODO to implement CAS.
Ivan Maidanski [Tue, 21 Feb 2017 20:38:47 +0000 (23:38 +0300)]
Eliminate 'missing braces around initializer' gcc warning (hppa)
* src/atomic_ops/sysdeps/gcc/hppa.h (AO_TS_INITIALIZER): Add extra
outermost {} braces.
Ivan Maidanski [Tue, 21 Feb 2017 08:43:42 +0000 (11:43 +0300)]
Update shared libraries version info to differentiate against v7.4.x
Version info "current" and "age" numbers are incremented, "revision"
number is reset to zero (indicating that programs using the previous
libraries version may use the new version as drop-in replacement).
Thus, version info is 2:0:1 now (both for libatomic_ops.so and
libatomic_ops_gpl.so).
* src/Makefile.am (LIBATOMIC_OPS_VER_INFO, LIBATOMIC_OPS_GPL_VER_INFO):
Change version info from 1:3:0 (used for libatomic_ops v7.4.x releases)
to 2:0:1.
Ivan Maidanski [Mon, 20 Feb 2017 20:30:55 +0000 (23:30 +0300)]
Fix 'unknown attribute no_sanitize' compiler warning (clang prior to v3.8)
* src/atomic_ops.h [!AO_ATTR_NO_SANITIZE_MEMORY && AO_MEMORY_SANITIZER]
(AO_ATTR_NO_SANITIZE_MEMORY): Do not define to no_sanitize attribute
unless clang-3.8+ (or not clang).
* tests/test_atomic_include.template [AO_HAVE_storeXX
&& AO_MEMORY_SANITIZER && AO_PREFER_GENERALIZED] (test_atomicXX):
Initialize x local variable (before AO_storeXX which can be defined
using CAS); add comment.
* tests/test_atomic_include.template [AO_HAVE_short_storeXX
&& AO_MEMORY_SANITIZER && AO_PREFER_GENERALIZED] (test_atomicXX):
Initialize s local variable.
* tests/test_atomic_include.template [AO_HAVE_char_storeXX
&& AO_MEMORY_SANITIZER && AO_PREFER_GENERALIZED] (test_atomicXX):
Initialize b local variable.
* tests/test_atomic_include.template [AO_HAVE_int_storeXX
&& AO_MEMORY_SANITIZER && AO_PREFER_GENERALIZED] (test_atomicXX):
Initialize zz local variable.
Ivan Maidanski [Mon, 20 Feb 2017 19:16:54 +0000 (22:16 +0300)]
Eliminate 'condition sizeof(long)>4 is always true' cppcheck style warning
* src/atomic_ops_malloc.c (msb): Cast (s >> 32) to unsigned int type
before assigning the result to v; check __SIZEOF_SIZE_T__ value (if
defined) to decide whether (s >> 32) is needed; move condition
(sizeof(size_t) > 4) to SIZEOF_SIZE_T_GT_4 macro (to eliminate cppcheck
false report that the condition is always true).
Ivan Maidanski [Mon, 20 Feb 2017 08:19:54 +0000 (11:19 +0300)]
Fix typo in comments in gcc/arm.h
* src/atomic_ops/sysdeps/gcc/arm.h [!AO_GENERALIZE_ASM_BOOL_CAS]
(AO_compare_and_swap): Fix typo ("succeeded") and add "then" in comment.
* src/atomic_ops/sysdeps/gcc/arm.h [AO_ARM_HAVE_LDREXD]
(AO_double_compare_and_swap): Likewise.
Ivan Maidanski [Mon, 20 Feb 2017 08:10:07 +0000 (11:10 +0300)]
Workaround 'AM_EXTRA_RECURSIVE_TARGETS not found in library' autoconf error
(fix commit 3b7e732)
* Makefile.am (.PHONY): Add check-nolink, check-nolink-local targets.
* Makefile.am (check-nolink): New target (which invokes existing
check-nolink-local in this Makefile and in tests/Makefile).
* configure.ac (AM_EXTRA_RECURSIVE_TARGETS): Remove (this directive
is not supported by autoconf-1.12 and earlier).
Ivan Maidanski [Sat, 18 Feb 2017 14:46:17 +0000 (17:46 +0300)]
Travis CI: Run 'make check-without-test-driver' for build with MSan/UBsan
(fix commit 8277cbf)
Ivan Maidanski [Sat, 18 Feb 2017 14:35:28 +0000 (17:35 +0300)]
Travis CI: Use 'make all' to generate list_atomic.c, test_atomic_include.h
(fix commits 4393a96, ff3885c)
Ivan Maidanski [Sat, 18 Feb 2017 14:20:05 +0000 (17:20 +0300)]
Travis CI: Do not output config.h if CSA_CHECK or CPPCHECK
(fix commit e6249bb)
Ivan Maidanski [Sat, 18 Feb 2017 07:23:33 +0000 (10:23 +0300)]
Add Makefile target to run all tests without test-driver
This could be used to catch errors reported by MemorySanitizer
(the traditional "make check" shows the tests with MSan errors as
skipped, so it does not lead to a non-zero exit code of make itself).
* tests/Makefile.am (check-without-test-driver): New phony target (to
compile, link and execute all tests not using test-driver).
Ivan Maidanski [Sat, 18 Feb 2017 06:21:58 +0000 (09:21 +0300)]
Add Makefile target (check-nolink) to compile all source without linking
Note: it is assumed --enable-shared is not passed to configure.
* Makefile.am (check-nolink-local): New Makefile phony target (just
redirects to "all").
* configure.ac: Define check-nolink by AM_EXTRA_RECURSIVE_TARGETS.
* tests/Makefile.am (TEST_OBJS): New variable (with a list of the test
.o files).
* tests/Makefile.am (check-nolink-local): New Makefile phony target
(forces all tests to be compiled but not linked).
Ivan Maidanski [Fri, 17 Feb 2017 20:48:23 +0000 (23:48 +0300)]
Refine documentation in Makefile.msft how to run all tests (MS VC)
* src/Makefile.msft: Refine comment about all tests execution
("make check" is redundant, it is enough to run only "make" to
auto-generate list_atomic.c and test_atomic_include.h).
Ivan Maidanski [Fri, 17 Feb 2017 20:27:19 +0000 (23:27 +0300)]
Move libraries version info to the beginning of Makefile.am
(code refactoring)
* src/Makefile.am (LIBATOMIC_OPS_VER_INFO, LIBATOMIC_OPS_GPL_VER_INFO):
New variable; add comment about the version update rule.
* src/Makefile.am (libatomic_ops_la_LDFLAGS,
libatomic_ops_gpl_la_LDFLAGS): Use LIBATOMIC_OPS_[GPL_]VER_INFO
instead direct hard-coding of version info.
Ivan Maidanski [Fri, 17 Feb 2017 08:51:30 +0000 (11:51 +0300)]
Travis CI: Also test with Memory and Unexpected Behavior sanitizers
Note: Currently an error found by MSan/UBSan does not cause Travis build
to fail, the log should be examined manually for the absence of
"MemorySanitizer" and "runtime error" character sequences (the error
messages are shown in red).
Ivan Maidanski [Thu, 16 Feb 2017 21:44:14 +0000 (00:44 +0300)]
Travis CI: Fix indent of CFLAGS_EXTRA assignment if SANITIZE set
(fix commit fc43ce4)
Ivan Maidanski [Thu, 16 Feb 2017 21:36:33 +0000 (00:36 +0300)]
Travis CI: Output config.h content
Ivan Maidanski [Thu, 16 Feb 2017 18:34:45 +0000 (21:34 +0300)]
Travis CI: Also test --disable-atomic-intrinsics
Ivan Maidanski [Thu, 16 Feb 2017 07:16:30 +0000 (10:16 +0300)]
Travis CI: Test also with AddressSanitizer (ASan)
Ivan Maidanski [Thu, 16 Feb 2017 06:43:25 +0000 (09:43 +0300)]
Workaround MSan warning about uninitialized data read by generalized store
* src/atomic_ops.h [__has_feature(memory_sanitizer)]
(AO_MEMORY_SANITIZER): Define.
* src/atomic_ops.h [AO_MEMORY_SANITIZER] (AO_ATTR_NO_SANITIZE_MEMORY):
Likewise.
* src/atomic_ops/generalize-small.h: Regenerate.
* src/atomic_ops/generalize-small.template
[AO_HAVE_XSIZE_compare_and_swap_write && !AO_HAVE_XSIZE_store_write]
(AO_XSIZE_store_write): Add AO_ATTR_NO_SANITIZE_MEMORY attribute.
* src/atomic_ops/generalize-small.template
[AO_HAVE_XSIZE_compare_and_swap && !AO_HAVE_XSIZE_store]
(AO_XSIZE_store): Likewise.
* src/atomic_ops/generalize-small.template
[AO_HAVE_XSIZE_compare_and_swap_release && !AO_HAVE_XSIZE_store_release]
(AO_XSIZE_store_release): Likewise.
* src/atomic_ops/generalize-small.template
[AO_HAVE_XSIZE_compare_and_swap_full && !AO_HAVE_XSIZE_store_full]
(AO_XSIZE_store_full): Likewise.
Ivan Maidanski [Wed, 15 Feb 2017 21:41:00 +0000 (00:41 +0300)]
.gitignore: Ignore *.sancov (generated by ASan)
Ivan Maidanski [Mon, 13 Feb 2017 21:54:35 +0000 (00:54 +0300)]
Travis CI: Add source check by cppcheck
Ivan Maidanski [Mon, 13 Feb 2017 21:39:50 +0000 (00:39 +0300)]
Travis CI: Pass -D DEBUG_RUN_ONE_TEST to CFLAGS during test coverage check
Ivan Maidanski [Mon, 13 Feb 2017 21:34:07 +0000 (00:34 +0300)]
Travis CI: Add source check by Clang Static Analyzer
Ivan Maidanski [Mon, 13 Feb 2017 21:26:19 +0000 (00:26 +0300)]
Travis CI: Also test --enable-shared
Ivan Maidanski [Mon, 6 Feb 2017 15:17:39 +0000 (18:17 +0300)]
Update ChangeLog file
Ivan Maidanski [Mon, 6 Feb 2017 14:49:02 +0000 (17:49 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Sat, 4 Feb 2017 06:58:06 +0000 (09:58 +0300)]
Travis CI: Test the default config without assertions
Ivan Maidanski [Fri, 3 Feb 2017 16:19:32 +0000 (19:19 +0300)]
Test store/CAS emulation explicitly
* tests/Makefile.am (test_atomic_generalized_CPPFLAGS): Add
-D AO_TEST_EMULATION.
* tests/test_atomic.c [(!_MSC_VER && !__MINGW32__ && !__BORLANDC__
|| AO_USE_NO_SIGNALS || AO_USE_WIN32_PTHREADS) && AO_TEST_EMULATION]
(AO_store_full_emulation, AO_fetch_compare_and_swap_emulation): Declare
prototype.
* tests/test_atomic.c [(!_MSC_VER && !__MINGW32__ && !__BORLANDC__
|| AO_USE_NO_SIGNALS || AO_USE_WIN32_PTHREADS) && AO_TEST_EMULATION
&& AO_HAVE_double_t] (AO_compare_double_and_swap_double_emulation):
Likewise.
* tests/test_atomic.c (test_atomic_emulation): New function (or a macro
defined to empty if AO_*_emulation primitives are unavailable).
* tests/test_atomic.c (main): Call test_atomic_emulation().
Ivan Maidanski [Thu, 2 Feb 2017 15:31:53 +0000 (18:31 +0300)]
Fix 'undefined reference to __atomic_load/store_16' error (clang-3.4/x64)
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& __x86_64__ && !__ILP32__ && __clang_major__==3 && __clang_minor__==4
&& !AO_PREFER_BUILTIN_ATOMICS]
(AO_SKIPATOMIC_double_compare_and_swap_ANY, AO_SKIPATOMIC_double_load,
AO_SKIPATOMIC_double_load_acquire, AO_SKIPATOMIC_double_store,
AO_SKIPATOMIC_double_store_release): Define; update comment.
Ivan Maidanski [Wed, 1 Feb 2017 20:52:09 +0000 (23:52 +0300)]
Travis CI: Remove -D AO_TRACE_MALLOC from CFLAGS as the log is too long
(fix commit bb94b84)
Ivan Maidanski [Wed, 1 Feb 2017 20:19:37 +0000 (23:19 +0300)]
Travis CI: Refactoring (define CFLAGS_EXTRA_M, CONF_* variables)
Ivan Maidanski [Tue, 31 Jan 2017 20:48:32 +0000 (23:48 +0300)]
.gitignore: Ignore coverage.info (generated by lcov)
Ivan Maidanski [Tue, 31 Jan 2017 20:43:27 +0000 (23:43 +0300)]
Travis CI: Use also 'tests' folder for coverage reporting
(fix commit 88ee70d)
Ivan Maidanski [Tue, 31 Jan 2017 20:07:14 +0000 (23:07 +0300)]
Add Coveralls (test coverage status) badge to README
Ivan Maidanski [Tue, 31 Jan 2017 19:28:44 +0000 (22:28 +0300)]
Travis CI: Fix output test_atomic*.log content
(fix commit 8b287a7)
Ivan Maidanski [Tue, 31 Jan 2017 19:13:44 +0000 (22:13 +0300)]
Travis CI: Report test coverage for Linux/x64 (native CPU)
Ivan Maidanski [Tue, 31 Jan 2017 18:46:57 +0000 (21:46 +0300)]
Travis CI: Output test_atomic*.log content
Ivan Maidanski [Tue, 31 Jan 2017 07:56:23 +0000 (10:56 +0300)]
Fix a typo in comment belonging to double_ptr_storage
(fix commit 7633154)
* src/atomic_ops/sysdeps/standard_ao_double_t.h [!__ILP32__ && !__clang__
&& (__x86_64__ && AO_GCC_ATOMIC_TEST_AND_SET || __aarch64__)]
(double_ptr_storage): Fix typo in comment ("pedantic").
Ivan Maidanski [Tue, 31 Jan 2017 07:29:44 +0000 (10:29 +0300)]
Fix test_atomic fail caused by AO_double_t misaligned load (Linux/i686)
* src/atomic_ops/sysdeps/standard_ao_double_t.h [__i386__ && __GNUC__]
(double_ptr_storage): Add aligned(8) attribute (so that AO_double_t
global/static variables to have proper (double-word) alignment).
Ivan Maidanski [Fri, 27 Jan 2017 21:36:09 +0000 (00:36 +0300)]
Travis CI: Exclude osx/gcc builds
(gcc is an alias to clang on OS X)
Ivan Maidanski [Fri, 27 Jan 2017 21:29:16 +0000 (00:29 +0300)]
Travis CI: Fix CFLAGS_EXTRA value with 2 options
(fix commit e294a77)
Ivan Maidanski [Fri, 27 Jan 2017 17:20:31 +0000 (20:20 +0300)]
Travis CI: compile both for x86 and x64
Ivan Maidanski [Fri, 27 Jan 2017 16:46:07 +0000 (19:46 +0300)]
Use generalized double-wide load/store if AO_PREFER_GENERALIZED (gcc/x86)
* src/atomic_ops/sysdeps/gcc/x86.h [!__x86_64__ || __ILP32__]: Do not
include double_atomic_load_store.h if AO_PREFER_GENERALIZED.
Ivan Maidanski [Fri, 27 Jan 2017 16:35:20 +0000 (19:35 +0300)]
Use generalized load/store if AO_PREFER_GENERALIZED (gcc/generic)
Note: AO_PREFER_GENERALIZED macro is for testing generalize.h mainly.
* src/atomic_ops/sysdeps/gcc/generic-small.template (AO_XSIZE_load,
AO_XSIZE_load_acquire, AO_XSIZE_store, AO_XSIZE_store_release): Do not
define if AO_GCC_HAVE_XSIZE_SYNC_CAS and AO_PREFER_GENERALIZED.
* src/atomic_ops/sysdeps/gcc/generic-small.h: Regenerate.
* src/atomic_ops/sysdeps/gcc/generic.h [AO_HAVE_DOUBLE_PTR_STORAGE]
(AO_GCC_HAVE_double_SYNC_CAS): Move the definition upper to be before
AO_double_load.
* src/atomic_ops/sysdeps/gcc/generic.h [AO_HAVE_DOUBLE_PTR_STORAGE]
(AO_double_load, AO_double_load_acquire, AO_double_store,
AO_double_store_release): Do not define if AO_GCC_HAVE_double_SYNC_CAS
and AO_PREFER_GENERALIZED.
Ivan Maidanski [Fri, 27 Jan 2017 16:11:22 +0000 (19:11 +0300)]
Appveyor CI: Test double-wide CAS in debug builds (x86/x64)
Ivan Maidanski [Fri, 27 Jan 2017 16:05:17 +0000 (19:05 +0300)]
Support CFLAGS_EXTRA to pass extra user-defined compiler flags (MS VC)
* src/Makefile.msft: Remove commented out variable assignments.
* src/Makefile.msft (CFLAGS_EXTRA): New variable (empty by default).
* src/Makefile.msft (CFLAGS): Append CFLAGS_EXTRA value.
Ivan Maidanski [Fri, 27 Jan 2017 06:47:03 +0000 (09:47 +0300)]
.gitignore: Ignore test_atomic_generalized
Ivan Maidanski [Fri, 27 Jan 2017 06:37:15 +0000 (09:37 +0300)]
Add test_atomic_generalized to Makefile and Makefile.msft
* src/Makefile.msft (test_atomic_generalized): New target (same as
test_atomic but with -D AO_PREFER_GENERALIZED).
* src/Makefile.msft (check): Add dependency on test_atomic_generalized;
run test_atomic_generalized.
* tests/Makefile.am (TESTS): Add test_atomic_generalized.
* tests/Makefile.am [HAVE_PTHREAD_H] (TEST): Add test_atomic_pthreads
instead of specifying all tests.
* tests/Makefile.am (test_atomic_generalized_SOURCES,
test_atomic_generalized_LDADD): Define (same as for test_atomic).
* tests/Makefile.am (test_atomic_generalized_CPPFLAGS): Define
specifying -D AO_PREFER_GENERALIZED.
Ivan Maidanski [Thu, 26 Jan 2017 20:10:57 +0000 (23:10 +0300)]
Appveyor CI: run test_malloc/stack
Ivan Maidanski [Thu, 26 Jan 2017 20:07:57 +0000 (23:07 +0300)]
Enable limited testing in Makefile.msft without Cygwin
New target "check-noautogen" is introduced in Makefile.msft to build and
run only test_malloc and test_stack (which do not need test code
auto-generation by sed).
* src/Makefile.msft: Refine comment about tests execution; add comment
about "check-noautogen" target.
* src/Makefile.msft (check): Add dependency on check-noautogen;
move test_malloc and test_stack to check-noautogen.
* src/Makefile.msft (check-noautogen): New target (executes test_malloc
and test_stack only).
Ivan Maidanski [Thu, 26 Jan 2017 07:43:08 +0000 (10:43 +0300)]
Travis CI: compile for host CPU (to test double-wide primitives)
Ivan Maidanski [Thu, 26 Jan 2017 07:38:21 +0000 (10:38 +0300)]
Implement AO_CLEAR using C11 atomic intrinsic (GCC)
* src/atomic_ops/sysdeps/gcc/generic.h [!AO_PREFER_GENERALIZED]
(AO_CLEAR): Implement using GCC built-in __atomic_clear (thus
overriding the default one based on AO_char_store_release).
Hans Boehm [Thu, 26 Jan 2017 07:16:54 +0000 (10:16 +0300)]
Implement compiler_barrier using C11 __atomic_signal_fence (GCC)
Use __atomic_signal_fence(__ATOMIC_SEQ_CST) as AO_compiler_barrier.
That was the intended use of __atomic_signal_fence. The only
standards-relevant context in which you can tell apart a compiler and
real fence is in the case if signal handlers.
* src/atomic_ops/sysdeps/gcc/generic.h (AO_compiler_barrier): Redefine
using GCC atomic intrinsic (__atomic_signal_fence).
Ivan Maidanski [Thu, 26 Jan 2017 06:46:57 +0000 (09:46 +0300)]
Fix type of general AO_TS_INITIALIZER
* src/atomic_ops.h (AO_TS_INITIALIZER): Change type from AO_t to
AO_TS_t; add outermost parentheses.
Ivan Maidanski [Tue, 24 Jan 2017 19:46:57 +0000 (22:46 +0300)]
Fix test_atomic failure caused unaligned AO_double_t access on x86
The failure is caused by violation of an assertion that checks
AO_double_t variable is 8-byte aligned on x86.
* doc/README.txt (AO_double_t): Add note about required alignment.
* src/atomic_ops/sysdeps/standard_ao_double_t.h (AO_double_t): Add
comment about alignment.
* src/atomic_ops_stack.h (AO_stack_t): Likewise.
* tests/test_atomic_include.template (test_atomicXX): Define old_w, w
local variables as static (as otherwise, e.g., they could have 4-byte
alignment on x86); add comment.
Ivan Maidanski [Tue, 24 Jan 2017 14:49:58 +0000 (17:49 +0300)]
Revert "Fix test_atomic fail caused unaligned AO_double_t access (VC/x86)"
This reverts commit
69c4010c1b3d43e2e179421e27379aaa5aeeb6d8.
The failure is actually caused by the fact that default alignment of
stack on x86 is 4 bytes.
So, another solution should be proposed to fix the issue for other
compilers (and, potentially, other targets). E.g. do not place
AO_double_t volatile variables on stack.
Ivan Maidanski [Mon, 23 Jan 2017 22:42:06 +0000 (01:42 +0300)]
Implement char CAS and char/short add for msftc X86[_64] (VS 2013+)
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_MSC_VER>=1800]
(_InterlockedCompareExchange8): Declare intrinsic.
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_MSC_VER>=1800
&& !AO_PREFER_GENERALIZED && !_M_ARM] (_InterlockedExchangeAdd16,
_InterlockedExchangeAdd8): Likewise.
* src/atomic_ops/sysdeps/msftc/x86_64.h [_MSC_VER>=1800]
(_InterlockedCompareExchange8): Likewise.
* src/atomic_ops/sysdeps/msftc/x86_64.h [_MSC_VER>=1800
&& !AO_PREFER_GENERALIZED] (_InterlockedExchangeAdd16,
_InterlockedExchangeAdd8): Likewise.
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_MSC_VER>=1800]
(AO_char_fetch_compare_and_swap_full): Implement using intrinsic.
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_MSC_VER>=1800
&& !AO_PREFER_GENERALIZED && !_M_ARM] (AO_char_fetch_and_add_full,
AO_short_fetch_and_add_full): Likewise.
* src/atomic_ops/sysdeps/msftc/x86_64.h [_MSC_VER>=1800]
(AO_char_fetch_compare_and_swap_full): Likewise.
* src/atomic_ops/sysdeps/msftc/x86_64.h [_MSC_VER>=1800
&& !AO_PREFER_GENERALIZED] (AO_char_fetch_and_add_full,
AO_short_fetch_and_add_full): Likewise.
* src/atomic_ops/sysdeps/msftc/x86.h [!AO_NO_ASM_XADD]
(AO_char_fetch_and_add_full, AO_short_fetch_and_add_full): Do not
define if AO_HAVE_char_fetch_and_add_full.
* src/atomic_ops/sysdeps/msftc/x86_64.h [AO_ASM_X64_AVAILABLE]
(AO_char_fetch_and_add_full, AO_short_fetch_and_add_full): Do not use
asm-based implementation if _MSC_VER>=1800.
Ivan Maidanski [Mon, 23 Jan 2017 22:32:41 +0000 (01:32 +0300)]
Implement short inc/dec directly for msftc ARM and X86[_64]
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_MSC_VER>1400
&& !AO_PREFER_GENERALIZED] (_InterlockedIncrement16,
_InterlockedDecrement16): Declare intrinsic.
* src/atomic_ops/sysdeps/msftc/x86_64.h [_MSC_VER>1400
&& !AO_PREFER_GENERALIZED] (_InterlockedIncrement16,
_InterlockedDecrement16): Likewise.
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_MSC_VER>1400
&& !AO_PREFER_GENERALIZED] (AO_short_fetch_and_add1_full,
AO_short_fetch_and_sub1_full): Implement using intrinsic.
* src/atomic_ops/sysdeps/msftc/x86_64.h [_MSC_VER>=1800
&& !AO_PREFER_GENERALIZED] (AO_char_fetch_and_add_full,
AO_short_fetch_and_add_full): Likewise.
Ivan Maidanski [Mon, 23 Jan 2017 21:26:23 +0000 (00:26 +0300)]
Really implement char and/or/xor and short CAS for msftc ARM (VS 2013+)
(fix commit 9182c62)
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_M_ARM]
(_InterlockedAnd8, _InterlockedCompareExchange16, _InterlockedOr8,
_InterlockedXor8): Declare intrinsic if _MSC_VER>=1800.
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_M_ARM]
(AO_char_and_full, AO_char_or_full, AO_char_xor_full,
AO_short_fetch_compare_and_swap_full): Implement (using intrinsic) if
_MSC_VER>=1800.
Ivan Maidanski [Sat, 21 Jan 2017 06:55:44 +0000 (09:55 +0300)]
Implement char and/or/xor and short CAS for msftc ARM and X86[_64]
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_MSC_VER>1400
&& !_M_ARM] (_InterlockedAnd8, _InterlockedCompareExchange16,
_InterlockedOr8, _InterlockedXor8): Declare intrinsic.
* src/atomic_ops/sysdeps/msftc/x86_64.h [_MSC_VER>1400]
(_InterlockedAnd8, _InterlockedCompareExchange16, _InterlockedOr8,
_InterlockedXor8): Likewise.
* src/atomic_ops/sysdeps/msftc/common32_defs.h [_MSC_VER>1400
&& !_M_ARM] (AO_char_and_full, AO_char_or_full, AO_char_xor_full,
AO_short_fetch_compare_and_swap_full): Implement (using intrinsic).
* src/atomic_ops/sysdeps/msftc/x86_64.h [_MSC_VER>1400]
(AO_char_and_full, AO_char_or_full, AO_char_xor_full,
AO_short_fetch_compare_and_swap_full): Likewise.
Ivan Maidanski [Fri, 20 Jan 2017 16:23:45 +0000 (19:23 +0300)]
Remove redundant include windows.h from headers (msftc/x86[_64])
* src/atomic_ops/sysdeps/msftc/common32_defs.h: Do not include windows.h
if _MSC_VER > 1400 && AO_USE_INTERLOCKED_INTRINSICS && !_WIN32_WCE.
* src/atomic_ops/sysdeps/msftc/common32_defs.h [!AO_PREFER_GENERALIZED
|| !AO_ASSUME_WINDOWS98] (AO_fetch_and_add_full, AO_fetch_and_add1_full,
AO_fetch_and_sub1_full): Replace LONG to long; remove unnecessary cast
to LONG.
* src/atomic_ops/sysdeps/msftc/common32_defs.h [AO_ASSUME_WINDOWS98]
(AO_fetch_compare_and_swap_full): Likewise.
* src/atomic_ops/sysdeps/msftc/x86_64.h
(AO_int_fetch_compare_and_swap_full): Likewise.
* src/atomic_ops/sysdeps/msftc/x86_64.h [!AO_PREFER_GENERALIZED]
(AO_int_fetch_and_add_full, AO_int_fetch_and_add1_full,
AO_int_fetch_and_sub1_full): Likewise.
* src/atomic_ops/sysdeps/msftc/common32_defs.h [AO_ASSUME_WINDOWS98]
(AO_fetch_compare_and_swap_full): Replace PVOID to void*; remove
unnecessary cast to AO_t.
* src/atomic_ops/sysdeps/msftc/x86_64.h: Remove include windows.h.
* src/atomic_ops/sysdeps/msftc/x86_64.h [!AO_PREFER_GENERALIZED]
(AO_fetch_and_add_full, AO_fetch_and_add1_full, AO_fetch_and_sub1_full):
Replace LONGLONG to __int64; remove unnecessary cast to LONGLONG.
* src/atomic_ops/sysdeps/msftc/x86_64.h
(AO_fetch_compare_and_swap_full): Likewise.
Ivan Maidanski [Fri, 20 Jan 2017 15:10:05 +0000 (18:10 +0300)]
Always define word-wide CAS for x86 (MS VC++ 8 or later)
Visual Studio 2005 (MS VC++ 8.0) discontinued support of Windows 95.
This patch deprecates AO_ASSUME_WINDOWS98 macro.
* configure.ac (AO_ASSUME_WINDOWS98): Remove AH template.
* doc/README.txt (AO_ASSUME_WINDOWS98): Remove documentation (as
relates only to Win95).
* doc/README_win32.txt (AO_ASSUME_WINDOWS98): Likwise.
* doc/README_win32.txt (AO_ASSUME_VISTA): Update documentation.
* src/Makefile.msft (CFLAGS): Remove "-D AO_ASSUME_WINDOWS98".
* src/Makefile.msft (test_atomic_w95): Remove target.
* src/Makefile.msft (check): Do not call test_atomic_w95; remove the
corresponding printed message.
* src/atomic_ops/sysdeps/msftc/x86.h: Remove AO_ASSUME_WINDOWS98 from
comment.
* src/atomic_ops/sysdeps/msftc/x86.h (AO_ASSUME_WINDOWS98): Define
(implicitly) if _MSC_VER >= 1400.
Ivan Maidanski [Fri, 20 Jan 2017 08:58:13 +0000 (11:58 +0300)]
Fix test_atomic failure caused unaligned AO_double_t access on x86 (VC++)
Passing an unaligned AO_double_t pointer to AO double-wide primitives
results in an undefined behavior of the latter when running on x86 (or
violation of the corresponding assertion on the alignment).
MS VC++/x86 aligns AO_double_t values on a 4-byte boundary by default.
For the proper alignment, __declspec(align(8)) should be applied to
variables defined in the client code (which uses double-wide AO
primitives). Unfortunately, the attribute cannot be added to
AO_double_t definition itself because the compiler does not allow the
attribute for function arguments.
This patch introduces AO_DOUBLE_ALIGN attribute for use by clients of
the double-wide AO primitives (and, thus, AO_stack clients).
Matters only Visual Studio compiler for X86.
The inner clients (atomic_ops_malloc, test_atomic, test_stack) are
updated to use this attribute.
* doc/README_win32.txt [x86] (AO_DOUBLE_ALIGN): Document.
* src/atomic_ops/sysdeps/generic_pthread.h (AO_DOUBLE_ALIGN): Define
(as empty).
* src/atomic_ops/sysdeps/standard_ao_double_t.h [!_WIN64 && _WIN32
&& !__GNUC__ && _MSC_VER] (AO_DOUBLE_ALIGN): Define as declspec
align(8); document it.
* src/atomic_ops/sysdeps/standard_ao_double_t.h [!AO_DOUBLE_ALIGN]
(AO_DOUBLE_ALIGN): Define as empty (otherwise).
* src/atomic_ops_stack.h [AO_USE_ALMOST_LOCK_FREE && !AO_DOUBLE_ALIGN]
(AO_DOUBLE_ALIGN): Likewise.
* src/atomic_ops_malloc.c (AO_free_list): Use AO_DOUBLE_ALIGN attribute.
* tests/test_stack.c (the_list): Likewise.
* src/atomic_ops_stack.h [!AO_USE_ALMOST_LOCK_FREE] (AO_stack_t):
Document AO_DOUBLE_ALIGN usage (by clients).
* tests/test_atomic_include.template (test_atomicXX): Use
AO_DOUBLE_ALIGN attribute for old_w and w double-wide local variables
(to avoid alignment assertion violation or AO primitives undefined
behavior on x86 if the test code is compiled by VC++).
Ivan Maidanski [Fri, 20 Jan 2017 00:03:54 +0000 (03:03 +0300)]
Add assertion that double-wide CAS target is aligned (msftc/x86[_64])
* src/atomic_ops/sysdeps/msftc/x86.h [AO_ASSUME_VISTA]
(AO_double_compare_and_swap_full): Add assert() that addr pointer is
aligned according to the size of AO_double_t.
* src/atomic_ops/sysdeps/msftc/x86_64.h [AO_CMPXCHG16B_AVAILABLE
&& _MSC_VER>=1500] (AO_compare_double_and_swap_double_full): Likewise.
Ivan Maidanski [Thu, 19 Jan 2017 07:03:59 +0000 (10:03 +0300)]
Fix turn off optimization in case of configure --enable-gcov
(fix commit 0d0a16d)
* configure.ac [enable_gcov] (CFLAGS): Change sed regular expression
to avoid [] (as they are not properly handled during autogen), and to
also filter out -Os and -Ofast (-O0 is ignored).
Ivan Maidanski [Mon, 16 Jan 2017 22:48:48 +0000 (01:48 +0300)]
Add asm-based char/short/int CAS implementation for gcc/x86[_64]
* src/atomic_ops/sysdeps/gcc/x86.h [!AO_GCC_ATOMIC_TEST_AND_SET]
(AO_char_and_full, AO_char_or_full, AO_char_xor_full, AO_short_and_full,
AO_short_or_full, AO_short_xor_full): Do not define if
AO_PREFER_GENERALIZED.
* src/atomic_ops/sysdeps/gcc/x86.h [!AO_GCC_ATOMIC_TEST_AND_SET]
(AO_char_fetch_compare_and_swap_full,
AO_short_fetch_compare_and_swap_full): Implement.
* src/atomic_ops/sysdeps/gcc/x86.h [!AO_GCC_ATOMIC_TEST_AND_SET
&& __x86_64__ && !__ILP32__] (AO_int_fetch_compare_and_swap_full):
Likewise.
* src/atomic_ops/sysdeps/gcc/x86.h [!AO_GCC_ATOMIC_TEST_AND_SET
&& __x86_64__ && !__ILP32__] (AO_int_fetch_and_add_full,
AO_int_and_full, AO_int_or_full, AO_int_xor_full): Do not define if
AO_PREFER_GENERALIZED.
Ivan Maidanski [Mon, 16 Jan 2017 21:34:48 +0000 (00:34 +0300)]
Implement int CAS/inc/dec for msftc/x86_64
* src/atomic_ops/sysdeps/msftc/x86_64.h (_InterlockedExchangeAdd):
Declare (as intrinsic) only unless AO_PREFER_GENERALIZED.
* src/atomic_ops/sysdeps/msftc/x86_64.h (_InterlockedCompareExchange):
Declare intrinsic.
* src/atomic_ops/sysdeps/msftc/x86_64.h [!AO_PREFER_GENERALIZED]
(_InterlockedIncrement, _InterlockedDecrement): Likewise.
* src/atomic_ops/sysdeps/msftc/x86_64.h
(AO_int_fetch_compare_and_swap_full): Define inline function (using
_InterlockedCompareExchange).
* src/atomic_ops/sysdeps/msftc/x86_64.h (AO_int_fetch_and_add_full):
Do not define if AO_PREFER_GENERALIZED.
* src/atomic_ops/sysdeps/msftc/x86_64.h [!AO_PREFER_GENERALIZED]
(AO_int_fetch_and_add1_full, AO_int_fetch_and_sub1_full): Define inline
function _InterlockedIncrement/Decrement).
Ivan Maidanski [Mon, 16 Jan 2017 20:55:01 +0000 (23:55 +0300)]
Remove outdated FIXME in msftc/arm.h about _InterlockedOps memory barrier
* src/atomic_ops/sysdeps/msftc/arm.h: Remove FIXME about memory barrier
of _InterlockedOps (they have the correct one according to the MSDN).
Ivan Maidanski [Fri, 13 Jan 2017 17:47:35 +0000 (20:47 +0300)]
Add configure --enable-gcov option (enable code coverage analysis)
* configure.ac (gcov): New --enable-* option.
* configure.ac [enable_gcov] (CFLAGS): Add "--coverage" option; filter
out "-O" options.
Ivan Maidanski [Fri, 13 Jan 2017 17:31:12 +0000 (20:31 +0300)]
.gitignore: Ignore gcov c/h output files
Ivan Maidanski [Thu, 12 Jan 2017 20:36:18 +0000 (23:36 +0300)]
Fix 'atomic_load/store symbols undefined' error on OS X 10.8 i386
Issue #23 (libatomic_ops).
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& !__x86_64__ && __APPLE__ && __MACH__]: Include AvailabilityMacros.h
unless MAC_OS_X_VERSION_MIN_REQUIRED already defined.
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& !__x86_64__ && __APPLE__ && __MACH__
&& MAC_OS_X_VERSION_MIN_REQUIRED < 1090] (AO_SKIPATOMIC_double_load,
AO_SKIPATOMIC_double_load_acquire, AO_SKIPATOMIC_double_store,
AO_SKIPATOMIC_double_store_release): Define.
Ivan Maidanski [Wed, 28 Dec 2016 23:02:27 +0000 (02:02 +0300)]
Fix AO_stack build failure on OS X 10.7 because of missing CAS (x86)
(fix commit 7a6a7cc)
Issue #23 (libatomic_ops).
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& __APPLE_CC__] (AO_GCC_FORCE_HAVE_CAS): Define also for arch i386;
refine comment.
Ivan Maidanski [Wed, 28 Dec 2016 20:43:05 +0000 (23:43 +0300)]
Fix AO_stack build failure on OS X 10.7 because of missing CAS (x86_64)
Issue #23 (libatomic_ops).
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& __APPLE_CC__ && __x86_64__] (AO_GCC_FORCE_HAVE_CAS): Define (to
workaround missing __GCC_HAVE_SYNC_COMPARE_AND_SWAP_<n> predefined
macro in Apple clang-425/x86_64); add comment.
Ivan Maidanski [Wed, 14 Dec 2016 16:29:58 +0000 (19:29 +0300)]
.gitignore: Properly ignore sym-linked folders of code analysis tools
(fix commit fa3ebc3)
Ivan Maidanski [Mon, 12 Dec 2016 21:46:56 +0000 (00:46 +0300)]
.gitignore: Ignore folders and files of static code analysis tools
Ivan Maidanski [Fri, 9 Dec 2016 21:31:25 +0000 (00:31 +0300)]
Support CFLAGS_EXTRA to pass extra user-defined compiler flags (configure)
* configure.ac: Add AC_SUBST(CFLAGS_EXTRA).
* src/Makefile.am (CFLAGS): Append $(CFLAGS_EXTRA).
* tests/Makefile.am (CFLAGS): Likewise.
Ivan Maidanski [Wed, 7 Dec 2016 23:00:12 +0000 (02:00 +0300)]
Travis CI configuration: turn on assertion checking
Ivan Maidanski [Wed, 7 Dec 2016 09:35:47 +0000 (12:35 +0300)]
Eliminate 'printf format specifies type void*' GCC pedantic warnings
This commit also eliminates 'cast from pointer to integer' compiler
warnings and '32-bit value shift followed by expansion to 64-bit'
static analysis tool warning.
* src/atomic_ops_malloc.c [AO_TRACE_MALLOC] (AO_malloc, AO_free):
Use %p (instead of %x) format specifier to print pthread_self() value
(and cast pthread_self() to void*).
* src/atomic_ops_malloc.c [AO_TRACE_MALLOC] (AO_malloc): Cast result+1
to void* (to match %p printf format specifier).
* src/atomic_ops_malloc.c [AO_TRACE_MALLOC] (AO_free): Use "UL" suffix
for 1 and remove the cast to unsigned long (instead of performing left
shift of an integer value and extending the result to unsigned long).
Ivan Maidanski [Mon, 5 Dec 2016 17:26:16 +0000 (20:26 +0300)]
Workaround 'uninitialized memory use' MemorySanitizer warning (test_atomic)
* tests/test_atomic_include.template (test_atomicXX): Ensure old_w is
always initialized before AO_double_storeXX; add comment about MSan
false warning.
Ivan Maidanski [Sat, 26 Nov 2016 18:58:00 +0000 (21:58 +0300)]
Update ChangeLog file
Ivan Maidanski [Sat, 26 Nov 2016 18:49:24 +0000 (21:49 +0300)]
Update ChangeLog file (v7.4 changes)
Ivan Maidanski [Thu, 24 Nov 2016 17:13:06 +0000 (20:13 +0300)]
Workaround a bug in double-wide intrinsics of Clang/x64 with ASan enabled
As of clang-3.8, double-wide arguments are incorrectly passed to
atomic intrinsic operations for x64 target if Address Sanitizer is
enabled.
* src/atomic_ops.h [__has_feature(address_sanitizer)]
(AO_ADDRESS_SANITIZER): New internal macro.
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& __clang__ && __x86_64__ && !__ILP32__]
(AO_SKIPATOMIC_double_compare_and_swap_ANY, AO_SKIPATOMIC_double_load,
AO_SKIPATOMIC_double_load_acquire, AO_SKIPATOMIC_double_store,
AO_SKIPATOMIC_double_store_release): Define also if AO_ADDRESS_SANITIZER;
update comment.
Ivan Maidanski [Wed, 23 Nov 2016 10:55:00 +0000 (13:55 +0300)]
Code refactoring of Clang double-wide intrinsic workarounds (gcc/x86)
(fix commits 9803386, f6a1b68, eb6d4fd)
* src/atomic_ops/sysdeps/gcc/generic.h [AO_HAVE_DOUBLE_PTR_STORAGE
&& !AO_HAVE_double_store] (AO_double_store): Do not define if
AO_SKIPATOMIC_double_store.
* src/atomic_ops/sysdeps/gcc/generic.h [AO_HAVE_DOUBLE_PTR_STORAGE
&& !AO_HAVE_double_store_release] (AO_double_store_release): Do not
define if AO_SKIPATOMIC_double_load.
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& __clang__ && !__x86_64__ && !__APPLE_CC__ && !__CYGWIN__
&& !AO_PREFER_BUILTIN_ATOMICS] (AO_SKIPATOMIC_double_load,
AO_SKIPATOMIC_double_load_acquire, AO_SKIPATOMIC_double_store,
AO_SKIPATOMIC_double_store_release): Define internal macro (undefined
at the end of file).
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& (__clang__ && !__x86_64__ && !__APPLE_CC__ && !__CYGWIN__
&& !AO_PREFER_BUILTIN_ATOMICS) || (__APPLE_CC__ && __x86_64__))]
(AO_SKIPATOMIC_double_compare_and_swap_ANY): Move definition here
(remove at other places in this file); undefine at the end of the file.
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET]: Check
AO_SKIPATOMIC_double_compare_and_swap_ANY instead of checking multiple
macros to detect whether a workaround for the CAS (and others)
double-wide operations is needed.
Ivan Maidanski [Wed, 23 Nov 2016 17:02:39 +0000 (20:02 +0300)]
Undefine internal macros that are defined solely for generic.h
(fix commits
03a0465f,
3c52619c,
66f7a4d3)
* src/atomic_ops/sysdeps/gcc/aarch64.h (AO_SKIPATOMIC_double_load,
AO_SKIPATOMIC_double_load_acquire): Undefine at the end of file.
* src/atomic_ops/sysdeps/gcc/arm.h (AO_SKIPATOMIC_ANY_and_ANY,
AO_SKIPATOMIC_ANY_or_ANY, AO_SKIPATOMIC_ANY_xor_ANY,
AO_SKIPATOMIC_char_store, AO_SKIPATOMIC_char_store_release,
AO_SKIPATOMIC_int_store, AO_SKIPATOMIC_int_store_release,
AO_SKIPATOMIC_short_store, AO_SKIPATOMIC_short_store_release,
AO_SKIPATOMIC_store, AO_SKIPATOMIC_store_release): Likewise.
Ivan Maidanski [Tue, 22 Nov 2016 01:48:41 +0000 (04:48 +0300)]
Fix GCC -Wpedantic checking in configure
(fix commit 96a8fd9)
* configure.ac [GCC] (ac_cv_cc_pedantic): Compile code that contains
"extern int quiet" (since the translation unit cannot be empty).
Ivan Maidanski [Tue, 22 Nov 2016 01:18:08 +0000 (04:18 +0300)]
Report gcc/clang pedantic warnings (configure)
* configure.ac [GCC] (WPEDANTIC): New variable (set to
"-Wpedantic -Wno-long-long" if supported by the compiler).
* configure.ac [GCC] (CFLAGS): Add $WPEDANTIC.
Ivan Maidanski [Fri, 18 Nov 2016 15:22:00 +0000 (18:22 +0300)]
Refine AO_nop_write comment for ARM big.LITTLE architecture
* src/atomic_ops/sysdeps/gcc/arm.h [!AO_UNIPROCESSOR && AO_ARM_HAVE_DMB
&& !AO_PREFER_BUILTIN_ATOMICS] (AO_nop_write): Refine comment about
"dmb ishst" for big.LITTLE architecture.
Tobias Leich [Thu, 17 Nov 2016 22:05:42 +0000 (01:05 +0300)]
Fix powerpc detection on AIX (gcc)
GCC/powerpc-ibm-aix does not define any of __powerpc__, __ppc__,
__PPC__, __powerpc64__, __ppc64__; but it does define _ARCH_PPC (and
_POWER).
* src/atomic_ops.h [_ARCH_PPC]: Include gcc/powerpc.h.
Ivan Maidanski [Mon, 14 Nov 2016 20:09:57 +0000 (23:09 +0300)]
Do not define print_list() unless used (tests)
* tests/test_malloc.c (print_list): Define only if DEBUG_RUN_ONE_TEST.
* tests/test_stack.c (print_list): Define only if VERBOSE.
Ivan Maidanski [Sat, 12 Nov 2016 06:47:57 +0000 (09:47 +0300)]
Fix indentation of #endif in s390.h
(fix commit c2edeab)
* src/atomic_ops/sysdeps/gcc/s390.h (AO_fetch_compare_and_swap_full):
Adjust indentation of #endif.
Ivan Maidanski [Thu, 10 Nov 2016 09:28:35 +0000 (12:28 +0300)]
Update AUTHORS file (add 'Tobias Leich')