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 @%:@include 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)"]) ])