# serial 1 # AC_DEFUN([HAVE_GCC_ATOMICS], [AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ax_cv_gcc_atomic_builtins], [AX_SAVE_FLAGS AC_LANG_PUSH([C]) AC_RUN_IFELSE([AC_LANG_PROGRAM([], [[ int foo= -10; int bar= 10; if (!__sync_fetch_and_add(&foo, bar) || foo) { return -1; } bar= __sync_lock_test_and_set(&foo, bar); if (bar || foo != 10) { return -1; } bar= __sync_val_compare_and_swap(&bar, foo, 15); if (bar) { return -1; } ]])], [ax_cv_gcc_atomic_builtins=yes], [ax_cv_gcc_atomic_builtins=no], [AC_MSG_WARN([test program execution failed])]) AC_LANG_POP AX_RESTORE_FLAGS ]) AS_IF([test "x$ax_cv_gcc_atomic_builtins" = "xyes"], [AC_DEFINE([HAVE_GCC_ATOMIC_BUILTINS],[1], [Define to 1 if compiler provides atomic builtins.]) ]) ])