Test whether libgcc or kernel defines __sync_bool_compare_and_swap_4.
From-SVN: r169504
This commit is contained in:
parent
56490b7406
commit
a7c48c8ec5
@ -39,6 +39,10 @@
|
||||
/* Define to 1 if you have the `strsignal' function. */
|
||||
#undef HAVE_STRSIGNAL
|
||||
|
||||
/* Define to 1 if the compiler provides the __sync_bool_compare_and_swap
|
||||
function for uint32 */
|
||||
#undef HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4
|
||||
|
||||
/* Define to 1 if you have the <syscall.h> header file. */
|
||||
#undef HAVE_SYSCALL_H
|
||||
|
||||
|
28
libgo/configure
vendored
28
libgo/configure
vendored
@ -14099,6 +14099,34 @@ fi
|
||||
done
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __sync_bool_compare_and_swap_4" >&5
|
||||
$as_echo_n "checking for __sync_bool_compare_and_swap_4... " >&6; }
|
||||
if test "${libgo_cv_func___sync_bool_compare_and_swap_4+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
typedef unsigned int uint32 __attribute__ ((mode (SI)));
|
||||
uint32 i;
|
||||
int main() { return __sync_bool_compare_and_swap (&i, 0, 1); }
|
||||
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
libgo_cv_func___sync_bool_compare_and_swap_4=yes
|
||||
else
|
||||
libgo_cv_func___sync_bool_compare_and_swap_4=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgo_cv_func___sync_bool_compare_and_swap_4" >&5
|
||||
$as_echo "$libgo_cv_func___sync_bool_compare_and_swap_4" >&6; }
|
||||
if test "$libgo_cv_func___sync_bool_compare_and_swap_4" = "yes"; then
|
||||
$as_echo "#define HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -minline-all-stringops" >&5
|
||||
$as_echo_n "checking whether compiler supports -minline-all-stringops... " >&6; }
|
||||
if test "${libgo_cv_c_stringops+set}" = set; then :
|
||||
|
@ -332,6 +332,20 @@ AC_CHECK_HEADERS(sys/mman.h syscall.h sys/epoll.h sys/ptrace.h sys/user.h sys/ut
|
||||
AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes)
|
||||
AC_CHECK_FUNCS(srandom random strsignal)
|
||||
|
||||
AC_CACHE_CHECK([for __sync_bool_compare_and_swap_4],
|
||||
[libgo_cv_func___sync_bool_compare_and_swap_4],
|
||||
[AC_LINK_IFELSE([
|
||||
typedef unsigned int uint32 __attribute__ ((mode (SI)));
|
||||
uint32 i;
|
||||
int main() { return __sync_bool_compare_and_swap (&i, 0, 1); }
|
||||
],
|
||||
[libgo_cv_func___sync_bool_compare_and_swap_4=yes],
|
||||
[libgo_cv_func___sync_bool_compare_and_swap_4=no])])
|
||||
if test "$libgo_cv_func___sync_bool_compare_and_swap_4" = "yes"; then
|
||||
AC_DEFINE(HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4, 1,
|
||||
[Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint32])
|
||||
fi
|
||||
|
||||
dnl For x86 we want to use the -minline-all-stringops option to avoid
|
||||
dnl forcing a stack split when calling memcpy and friends.
|
||||
AC_CACHE_CHECK([whether compiler supports -minline-all-stringops],
|
||||
|
@ -77,7 +77,7 @@ runtime_destroylock(Lock *l)
|
||||
sem_destroy(&l->sem);
|
||||
}
|
||||
|
||||
#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
||||
#ifndef HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4
|
||||
|
||||
// For targets which don't have the required sync support. Really
|
||||
// this should be provided by gcc itself. FIXME.
|
||||
|
Loading…
Reference in New Issue
Block a user