headers: Simplify setjmp define Assume that on ARM targets, the __has_builtin(__builtin_sponentry) check is equivalent to defined(__SEH__). Signed-off-by: Jacek Caban <jacek@codeweavers.com>
diff --git a/mingw-w64-headers/crt/setjmp.h b/mingw-w64-headers/crt/setjmp.h index 2dc7d87..97939f5 100644 --- a/mingw-w64-headers/crt/setjmp.h +++ b/mingw-w64-headers/crt/setjmp.h
@@ -224,21 +224,21 @@ #ifndef _INC_SETJMPEX # if defined(_X86_) || defined(__i386__) # define setjmp(BUF) _setjmp3((BUF), NULL) -# elif ((defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) && (!defined(__SEH__) || !__has_builtin(__builtin_sponentry) || defined(__USE_MINGW_SETJMP_NON_SEH))) -# define setjmp(BUF) __mingw_setjmp((BUF)) -# define longjmp __mingw_longjmp - int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) __mingw_setjmp(jmp_buf _Buf); - __MINGW_ATTRIB_NORETURN __attribute__ ((__nothrow__)) void __mingw_longjmp(jmp_buf _Buf,int _Value); -# elif defined(__SEH__) && !defined(__USE_MINGW_SETJMP_NON_SEH) -# if defined(__aarch64__) || defined(_ARM64_) || defined(__arm__) || defined(_ARM_) -# define setjmp(BUF) _setjmp((BUF), __builtin_sponentry()) -# elif (__MINGW_GCC_VERSION < 40702) && !defined(__clang__) -# define setjmp(BUF) _setjmp((BUF), mingw_getsp()) +# elif !defined(__SEH__) || defined(__USE_MINGW_SETJMP_NON_SEH) +# if defined(__arm__) || defined(__aarch64__) +# define setjmp(BUF) __mingw_setjmp((BUF)) +# define longjmp __mingw_longjmp + int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) __mingw_setjmp(jmp_buf _Buf); + __MINGW_ATTRIB_NORETURN __attribute__ ((__nothrow__)) void __mingw_longjmp(jmp_buf _Buf,int _Value); # else -# define setjmp(BUF) _setjmp((BUF), __builtin_frame_address (0)) +# define setjmp(BUF) _setjmp((BUF), NULL) # endif +# elif defined(__aarch64__) || defined(__arm__) +# define setjmp(BUF) _setjmp((BUF), __builtin_sponentry()) +# elif (__MINGW_GCC_VERSION < 40702) && !defined(__clang__) +# define setjmp(BUF) _setjmp((BUF), mingw_getsp()) # else -# define setjmp(BUF) _setjmp((BUF), NULL) +# define setjmp(BUF) _setjmp((BUF), __builtin_frame_address (0)) # endif int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmp(jmp_buf _Buf, void *_Ctx); int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmp3(jmp_buf _Buf, void *_Ctx);