[前][次][番号順一覧][スレッド一覧]

ruby-changes:67267

From: Nobuyoshi <ko1@a...>
Date: Fri, 27 Aug 2021 15:41:00 +0900 (JST)
Subject: [ruby-changes:67267] 80c1faf076 (master): Use C99-defined signbit macro

https://git.ruby-lang.org/ruby.git/commit/?id=80c1faf076

From 80c1faf0769abfb459c5c749206ed02311d8274b Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
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 f0dfd2a..da69f91 100644
--- a/complex.c
+++ b/complex.c
@@ -34,10 +34,6 @@ https://github.com/ruby/ruby/blob/trunk/complex.c#L34
 #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 9009674..beb352d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1916,17 +1916,7 @@ AS_CASE(["$target_os"], https://github.com/ruby/ruby/blob/trunk/configure.ac#L1916
 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 a4a2bbb..824d5fe 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); https://github.com/ruby/ruby/blob/trunk/include/ruby/missing.h#L198
 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 dd98d88..4298267 100644
--- a/math.c
+++ b/math.c
@@ -26,11 +26,6 @@ https://github.com/ruby/ruby/blob/trunk/math.c#L26
 #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 2f7ce8c..0000000
--- a/missing/signbit.c
+++ /dev/null
@@ -1,19 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/math.c#L0
-#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);
-}
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]