mirror of git://sourceware.org/git/glibc.git
x86: math: Use of __libgcc_cmp_return__ iff compiler supports it
clang does not support '__attribute__ ((mode (__libgcc_cmp_return__)))', so use a more close related type instead fo the default 'int'.
This commit is contained in:
parent
bd6b49e11d
commit
d25db12c2a
|
|
@ -323,4 +323,7 @@
|
||||||
/* Define if compiler allows add attribute after function declaration. */
|
/* Define if compiler allows add attribute after function declaration. */
|
||||||
#undef ATTR_AFTER_FUNC_DECL
|
#undef ATTR_AFTER_FUNC_DECL
|
||||||
|
|
||||||
|
/* Define if compiler suport __attribute__ ((mode (__libgcc_cmp_return__))). */
|
||||||
|
#undef HAVE_X86_LIBGCC_CMP_RETURN_ATTR
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -392,6 +392,45 @@ else
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
conftest_code="
|
||||||
|
int __gcc_CMPtype_GCC __attribute__ ((mode (__libgcc_cmp_return__)));
|
||||||
|
"
|
||||||
|
|
||||||
|
cat > conftest.c <<EOF
|
||||||
|
$conftest_code
|
||||||
|
EOF
|
||||||
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __libgcc_cmp_return__ mode attribute support" >&5
|
||||||
|
printf %s "checking for __libgcc_cmp_return__ mode attribute support... " >&6; }
|
||||||
|
if test ${libc_cv_cc_x86_libgcc_cmp_return_attribute+y}
|
||||||
|
then :
|
||||||
|
printf %s "(cached) " >&6
|
||||||
|
else case e in #(
|
||||||
|
e) if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $CFLAGS -c conftest.c -o conftest 1>&5'
|
||||||
|
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||||
|
test $ac_status = 0; }; }
|
||||||
|
then
|
||||||
|
libc_cv_cc_x86_libgcc_cmp_return_attribute=yes
|
||||||
|
else
|
||||||
|
libc_cv_cc_x86_libgcc_cmp_return_attribute=no
|
||||||
|
fi ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_x86_libgcc_cmp_return_attribute" >&5
|
||||||
|
printf "%s\n" "$libc_cv_cc_x86_libgcc_cmp_return_attribute" >&6; }
|
||||||
|
rm -f conftest*
|
||||||
|
if test "$libc_cv_cc_x86_libgcc_cmp_return_attribute" = yes; then
|
||||||
|
printf "%s\n" "#define HAVE_X86_LIBGCC_CMP_RETURN_ATTR 1" >>confdefs.h
|
||||||
|
|
||||||
|
else
|
||||||
|
printf "%s\n" "#define HAVE_X86_LIBGCC_CMP_RETURN_ATTR 0" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
if test "${libc_cv_cc_no_direct_extern_access}${libc_cv_test_cc_cflags_no_direct_extern_access}" = yes; then
|
if test "${libc_cv_cc_no_direct_extern_access}${libc_cv_test_cc_cflags_no_direct_extern_access}" = yes; then
|
||||||
libc_cv_protected_data=no
|
libc_cv_protected_data=no
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -223,6 +223,24 @@ else
|
||||||
AC_DEFINE(HAVE_X86_INLINE_TRUNC, 0)
|
AC_DEFINE(HAVE_X86_INLINE_TRUNC, 0)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
conftest_code="
|
||||||
|
int __gcc_CMPtype_GCC __attribute__ ((mode (__libgcc_cmp_return__)));
|
||||||
|
"
|
||||||
|
dnl Check if CC support the __libgcc_cmp_return__ mode attribute
|
||||||
|
LIBC_TRY_CC_COMMAND([for __libgcc_cmp_return__ mode attribute support],
|
||||||
|
[$conftest_code],
|
||||||
|
[$CFLAGS -c],
|
||||||
|
libc_cv_cc_x86_libgcc_cmp_return_attribute,
|
||||||
|
[libc_cv_cc_x86_libgcc_cmp_return_attribute=yes],
|
||||||
|
[libc_cv_cc_x86_libgcc_cmp_return_attribute=no])
|
||||||
|
if test "$libc_cv_cc_x86_libgcc_cmp_return_attribute" = yes; then
|
||||||
|
AC_DEFINE(HAVE_X86_LIBGCC_CMP_RETURN_ATTR, 1)
|
||||||
|
else
|
||||||
|
AC_DEFINE(HAVE_X86_LIBGCC_CMP_RETURN_ATTR, 0)
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
dnl If the building compiler enables no direct external data access by
|
dnl If the building compiler enables no direct external data access by
|
||||||
dnl default, access to protected data in shared libraries from executables
|
dnl default, access to protected data in shared libraries from executables
|
||||||
dnl must be compiled with no direct external data access. If the testing
|
dnl must be compiled with no direct external data access. If the testing
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,17 @@
|
||||||
/* Configure soft-fp for building sqrtf128. Based on sfp-machine.h in
|
/* Configure soft-fp for building sqrtf128. Based on sfp-machine.h in
|
||||||
libgcc, with soft-float and other irrelevant parts removed. */
|
libgcc, with soft-float and other irrelevant parts removed. */
|
||||||
|
|
||||||
|
#if HAVE_X86_LIBGCC_CMP_RETURN_ATTR
|
||||||
/* The type of the result of a floating point comparison. This must
|
/* The type of the result of a floating point comparison. This must
|
||||||
match `__libgcc_cmp_return__' in GCC for the target. */
|
match `__libgcc_cmp_return__' in GCC for the target. */
|
||||||
typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
|
typedef int __gcc_CMPtype_GCC __attribute__ ((mode (__libgcc_cmp_return__)));
|
||||||
|
#else
|
||||||
|
# ifdef __x86_64__
|
||||||
|
typedef long long int __gcc_CMPtype;
|
||||||
|
#else
|
||||||
|
typedef long int __gcc_CMPtype;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
#define CMPtype __gcc_CMPtype
|
#define CMPtype __gcc_CMPtype
|
||||||
|
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue