From 80c1faf0769abfb459c5c749206ed02311d8274b Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 27 Aug 2021 12:42:23 +0900 Subject: Use C99-defined signbit macro --- complex.c | 4 ---- configure.ac | 12 +----------- include/ruby/missing.h | 4 ---- math.c | 5 ----- missing/signbit.c | 19 ------------------- 5 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 missing/signbit.c diff --git a/complex.c b/complex.c index f0dfd2ab78..da69f9197c 100644 --- a/complex.c +++ b/complex.c @@ -34,10 +34,6 @@ #else static VALUE RFLOAT_0; #endif -#if defined(HAVE_SIGNBIT) && defined(__GNUC__) && defined(__sun) && \ - !defined(signbit) -extern int signbit(double); -#endif VALUE rb_cComplex; diff --git a/configure.ac b/configure.ac index 900967492d..beb352dbe9 100644 --- a/configure.ac +++ b/configure.ac @@ -1916,17 +1916,7 @@ AS_CASE(["$target_os"], AC_CHECK_HEADERS(sys/pstat.h) -AC_CACHE_CHECK(for signbit, rb_cv_have_signbit, - [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ -#include -]], [[int v = signbit(-0.0);]])], - rb_cv_have_signbit=yes, - rb_cv_have_signbit=no)]) -AS_IF([test "$rb_cv_have_signbit" = yes], [ - AC_DEFINE(HAVE_SIGNBIT) -], [ - AC_LIBOBJ([signbit]) -]) +AC_DEFINE(HAVE_SIGNBIT) # C99; backward compatibility AC_FUNC_FORK diff --git a/include/ruby/missing.h b/include/ruby/missing.h index a4a2bbb8ee..824d5fe198 100644 --- a/include/ruby/missing.h +++ b/include/ruby/missing.h @@ -198,10 +198,6 @@ RUBY_EXTERN size_t strlcpy(char *, const char*, size_t); RUBY_EXTERN size_t strlcat(char *, const char*, size_t); #endif -#ifndef HAVE_SIGNBIT -RUBY_EXTERN int signbit(double x); -#endif - #ifndef HAVE_FFS RUBY_EXTERN int ffs(int); #endif diff --git a/math.c b/math.c index dd98d8806e..429826763d 100644 --- a/math.c +++ b/math.c @@ -26,11 +26,6 @@ #include "internal/object.h" #include "internal/vm.h" -#if defined(HAVE_SIGNBIT) && defined(__GNUC__) && defined(__sun) && \ - !defined(signbit) - extern int signbit(double); -#endif - #define RB_BIGNUM_TYPE_P(x) RB_TYPE_P((x), T_BIGNUM) VALUE rb_mMath; diff --git a/missing/signbit.c b/missing/signbit.c deleted file mode 100644 index 2f7ce8c601..0000000000 --- a/missing/signbit.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include "ruby.h" - -int -signbit(double x) -{ - enum {double_per_long = sizeof(double) / sizeof(long)}; - enum {long_msb = sizeof(long) * CHAR_BIT - 1}; - union {double d; unsigned long i[double_per_long];} u; - unsigned long l; - - u.d = x; -#ifdef WORDS_BIGENDIAN - l = u.i[0]; -#else - l = u.i[double_per_long - 1]; -#endif - return (int)(l >> long_msb); -} -- cgit v1.2.1