From 3af095f84c8ea19165bfd9154829c867691039e6 Mon Sep 17 00:00:00 2001 From: mame Date: Wed, 6 Dec 2017 03:19:17 +0000 Subject: eval_intern.h: prevent core dump with clang and make test-all git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval_intern.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'eval_intern.h') diff --git a/eval_intern.h b/eval_intern.h index 7259a79bee..c496d1389f 100644 --- a/eval_intern.h +++ b/eval_intern.h @@ -144,7 +144,11 @@ LONG WINAPI rb_w32_stack_overflow_handler(struct _EXCEPTION_POINTERS *); #define EC_REPUSH_TAG() (void)(_ec->tag = &_tag) -#if defined __GNUC__ && __GNUC__ == 4 && (__GNUC_MINOR__ >= 6 && __GNUC_MINOR__ <= 8) +#if defined __GNUC__ && __GNUC__ == 4 && (__GNUC_MINOR__ >= 6 && __GNUC_MINOR__ <= 8) || __clang__ +/* This macro prevents GCC 4.6--4.8 from emitting maybe-uninitialized warnings. + * This macro also prevents Clang from dumping core in EC_EXEC_TAG(). + * (I confirmed Clang 4.0.1 and 4.0.0.) + */ # define VAR_FROM_MEMORY(var) __extension__(*(__typeof__(var) volatile *)&(var)) # define VAR_INITIALIZED(var) ((var) = VAR_FROM_MEMORY(var)) # define VAR_NOCLOBBERED(var) volatile var -- cgit v1.2.3