summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--complex.c4
-rw-r--r--configure.ac12
-rw-r--r--include/ruby/missing.h4
-rw-r--r--math.c5
-rw-r--r--missing/signbit.c19
5 files changed, 1 insertions, 43 deletions
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 <math.h>
-]], [[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 <limits.h>
-#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);
-}