Before this NORETURN was checked only for __attribute__ or __declspec,
but nowadays other ways are there to tell compilers that a function
never returns.  Take them into account.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shyouhei 2018-01-15 02:35:20 +00:00
Родитель df9a70900a
Коммит 8f745a2fab
1 изменённых файлов: 11 добавлений и 4 удалений

Просмотреть файл

@ -29,10 +29,6 @@ extern "C" {
#ifndef PUREFUNC
# define PUREFUNC(x) x
#endif
#define NORETURN_STYLE_NEW 1
#ifndef NORETURN
# define NORETURN(x) x
#endif
#ifndef DEPRECATED
# define DEPRECATED(x) x
#endif
@ -390,6 +386,17 @@ void rb_ia64_flushrs(void);
#define RUBY_ALIGNOF(x) ((size_t)offsetof(struct { char f1; type f2; }, f2))
#endif
#define NORETURN_STYLE_NEW 1
#ifdef NORETURN
/* OK, take that definition */
#elif defined(__cplusplus) && (__cplusplus >= 201103L)
#define NORETURN(x) [[ noreturn ]] x
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
#define NORETURN(x) _Noreturn x
#else
#define NORETURN(x) x
#endif
RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)