summaryrefslogtreecommitdiff
path: root/configure.in
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-04 02:37:27 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-04 02:37:27 +0000
commit9dd0113023283583441fc4f3cc571c275ec5ec0b (patch)
tree332672ae3642b77a9831416293dbfbe173c34ed6 /configure.in
parentd41af17d373c779757864eb20a233a50f2b82673 (diff)
configure.in: get rid of clang fatal error
* configure.in (ac_cv_func___builtin_setjmp): get rid of a bug in clang 3.3 and 3.4, which __builtin_setjmp() causes fatal error in backend, linker error, or segmentation fault. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'configure.in')
-rw-r--r--configure.in7
1 files changed, 4 insertions, 3 deletions
diff --git a/configure.in b/configure.in
index a7d3c75a7d..2094f7b4a7 100644
--- a/configure.in
+++ b/configure.in
@@ -2080,15 +2080,16 @@ fi
AC_CACHE_CHECK(for __builtin_setjmp, ac_cv_func___builtin_setjmp,
[
ac_cv_func___builtin_setjmp=no
- for cast in "" "(void *)"; do
+ for cast in "" "(void **)"; do
RUBY_WERROR_FLAG(
[AC_TRY_LINK([@%:@include <setjmp.h>
@%:@include <stdio.h>
jmp_buf jb;
- void t(void) {__builtin_longjmp($cast jb, 1);}],
+ void t(void) {__builtin_longjmp($cast jb, 1);}
+ int jump(void) {(void)(__builtin_setjmp($cast jb) ? 1 : 0); return 0;}],
[
void (*volatile f)(void) = t;
- if (!__builtin_setjmp($cast jb)) printf("%d\n", f != 0);
+ if (!jump()) printf("%d\n", f != 0);
],
[ac_cv_func___builtin_setjmp="yes with cast ($cast)"])
])