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

ruby-changes:71218

From: Nobuyoshi <ko1@a...>
Date: Sat, 19 Feb 2022 15:33:28 +0900 (JST)
Subject: [ruby-changes:71218] 2ae35ad766 (master): RUBY_REPLACE_TYPE: check if the target type is a pointer

https://git.ruby-lang.org/ruby.git/commit/?id=2ae35ad766

From 2ae35ad76611b0da21cef4c8444d9ff74368e874 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Fri, 18 Feb 2022 17:58:24 +0900
Subject: RUBY_REPLACE_TYPE: check if the target type is a pointer

---
 tool/m4/ruby_replace_type.m4 | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/tool/m4/ruby_replace_type.m4 b/tool/m4/ruby_replace_type.m4
index 70674b6cc7..3df0f3994f 100644
--- a/tool/m4/ruby_replace_type.m4
+++ b/tool/m4/ruby_replace_type.m4
@@ -6,6 +6,13 @@ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl https://github.com/ruby/ruby/blob/trunk/tool/m4/ruby_replace_type.m4#L6
 		  [n="patsubst([$2],["],[\\"])"],
 		  [$4])
     AC_CACHE_CHECK([for convertible type of [$1]], rb_cv_[$1]_convertible, [
+	AC_COMPILE_IFELSE(
+	    [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])]
+		[typedef $n rbcv_conftest_target_type;
+		extern rbcv_conftest_target_type rbcv_conftest_var;
+		], [sizeof(&*rbcv_conftest_var)])],
+	[rb_cv_[$1]_convertible=PTR],
+	[
 	u= t=
 	AS_CASE(["$n "],
 	  [*" signed "*], [ ],
@@ -37,6 +44,7 @@ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl https://github.com/ruby/ruby/blob/trunk/tool/m4/ruby_replace_type.m4#L44
 	  [
 	    t=INT])
 	rb_cv_[$1]_convertible=${u}${t}])
+    ])
     AS_IF([test "${AS_TR_SH(ac_cv_type_[$1])}" = "yes"], [
 	n="$1"
     ], [
@@ -48,11 +56,13 @@ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl https://github.com/ruby/ruby/blob/trunk/tool/m4/ruby_replace_type.m4#L56
 	AS_CASE(["${rb_cv_[$1]_convertible}"],
 		[U*], [n="unsigned $n"])
     ])
-    AS_CASE("${rb_cv_[$1]_convertible}", [U*], [u=+1], [u=-1])
+    AS_CASE("${rb_cv_[$1]_convertible}", [PTR], [u=], [U*], [u=+1], [u=-1])
     AC_DEFINE_UNQUOTED(rb_[$1], $n)
+    AS_IF([test $u], [
     AC_DEFINE_UNQUOTED([SIGNEDNESS_OF_]AS_TR_CPP($1), $u)
     AC_DEFINE_UNQUOTED([$3]2NUM[(v)], [${rb_cv_[$1]_convertible}2NUM(v)])
     AC_DEFINE_UNQUOTED(NUM2[$3][(v)], [NUM2${rb_cv_[$1]_convertible}(v)])
     AC_DEFINE_UNQUOTED(PRI_[$3]_PREFIX,
 	[PRI_`echo ${rb_cv_[$1]_convertible} | sed ['s/^U//']`_PREFIX])
+    ])
 ])dnl
-- 
cgit v1.2.1


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

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