aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--configure.in1
-rw-r--r--eval_error.c2
-rw-r--r--include/ruby/encoding.h2
-rw-r--r--include/ruby/intern.h2
-rw-r--r--internal.h10
6 files changed, 15 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 249dbb8d1e..27d415e4ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri May 13 03:11:20 2016 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (__builtin_constant_p): check.
+
+ * interna.h: Use HAVE_BUILTIN___BUILTIN_CONSTANT_P
+
Fri May 13 03:10:39 2016 NARUSE, Yui <naruse@ruby-lang.org>
* configurein: use alternative keyword
diff --git a/configure.in b/configure.in
index d90fefbad5..5bafecaa60 100644
--- a/configure.in
+++ b/configure.in
@@ -2445,6 +2445,7 @@ RUBY_CHECK_BUILTIN_FUNC(__builtin_clzl, [__builtin_clzl(0)])
RUBY_CHECK_BUILTIN_FUNC(__builtin_clzll, [__builtin_clzll(0)])
RUBY_CHECK_BUILTIN_FUNC(__builtin_ctz, [__builtin_ctz(0)])
RUBY_CHECK_BUILTIN_FUNC(__builtin_ctzll, [__builtin_ctzll(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_constant_p, [__builtin_constant_p(0)])
RUBY_CHECK_BUILTIN_FUNC(__builtin_choose_expr, [
[int x[__extension__(__builtin_choose_expr(1, 1, -1))]];
[int y[__extension__(__builtin_choose_expr(0, -1, 1))]];
diff --git a/eval_error.c b/eval_error.c
index c3e7c25e67..d18658bb14 100644
--- a/eval_error.c
+++ b/eval_error.c
@@ -3,7 +3,7 @@
* included by eval.c
*/
-#if defined(__GNUC__) && !defined(__PCC__)
+#ifdef HAVE_BUILTIN___BUILTIN_CONSTANT_P
#define warn_print(x) __extension__ ( \
{ \
(__builtin_constant_p(x)) ? \
diff --git a/include/ruby/encoding.h b/include/ruby/encoding.h
index 4e10b77f7a..371258c328 100644
--- a/include/ruby/encoding.h
+++ b/include/ruby/encoding.h
@@ -145,7 +145,7 @@ VALUE rb_str_export_to_enc(VALUE, rb_encoding *);
VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
VALUE rb_str_conv_enc_opts(VALUE str, rb_encoding *from, rb_encoding *to, int ecflags, VALUE ecopts);
-#if defined(__GNUC__) && !defined(__PCC__)
+#ifdef HAVE_BUILTIN___BUILTIN_CONSTANT_P
#define rb_enc_str_new(str, len, enc) __extension__ ( \
{ \
(__builtin_constant_p(str) && __builtin_constant_p(len)) ? \
diff --git a/include/ruby/intern.h b/include/ruby/intern.h
index a33f7cc407..67e51a9610 100644
--- a/include/ruby/intern.h
+++ b/include/ruby/intern.h
@@ -790,7 +790,7 @@ VALUE rb_str_scrub(VALUE, VALUE);
/* symbol.c */
VALUE rb_sym_all_symbols(void);
-#if defined(__GNUC__) && !defined(__PCC__)
+#ifdef HAVE_BUILTIN___BUILTIN_CONSTANT_P
#define rb_str_new(str, len) __extension__ ( \
{ \
(__builtin_constant_p(str) && __builtin_constant_p(len)) ? \
diff --git a/internal.h b/internal.h
index d4565ee437..001a385a69 100644
--- a/internal.h
+++ b/internal.h
@@ -1323,8 +1323,8 @@ VALUE rb_fstring_new(const char *ptr, long len);
#define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
#define rb_fstring_literal(str) rb_fstring_lit(str)
VALUE rb_fstring_cstr(const char *str);
-#if defined(__GNUC__) && !defined(__PCC__)
-#define rb_fstring_cstr(str) __extension__ ( \
+#ifdef HAVE_BUILTIN___BUILTIN_CONSTANT_P
+# define rb_fstring_cstr(str) __extension__ ( \
{ \
(__builtin_constant_p(str)) ? \
rb_fstring_new((str), (long)strlen(str)) : \
@@ -1336,14 +1336,14 @@ VALUE rb_fstring_enc_new(const char *ptr, long len, rb_encoding *enc);
#define rb_fstring_enc_lit(str, enc) rb_fstring_enc_new((str), rb_strlen_lit(str), (enc))
#define rb_fstring_enc_literal(str, enc) rb_fstring_enc_lit(str, enc)
VALUE rb_fstring_enc_cstr(const char *ptr, rb_encoding *enc);
-#if defined(__GNUC__) && !defined(__PCC__)
-#define rb_fstring_enc_cstr(str, enc) __extension__ ( \
+# ifdef HAVE_BUILTIN___BUILTIN_CONSTANT_P
+# define rb_fstring_enc_cstr(str, enc) __extension__ ( \
{ \
(__builtin_constant_p(str)) ? \
rb_fstring_enc_new((str), (long)strlen(str), (enc)) : \
rb_fstring_enc_cstr(str, enc); \
})
-#endif
+# endif
#endif
int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
int rb_str_symname_p(VALUE);