From 339e8e84191c2d5a1c06bdc1feb17405363ec022 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Sun, 9 Apr 2017 17:23:35 +0900 Subject: [PATCH] __builtin_unreachable() seems not emit runtime error --- lib/cont.c | 8 ++++---- lib/include/picrin/setup.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/cont.c b/lib/cont.c index e8034577..ff5713ec 100644 --- a/lib/cont.c +++ b/lib/cont.c @@ -104,7 +104,7 @@ pic_alloca_cont(pic_state *pic) } static pic_value -values(pic_state *pic, int argc, pic_value *argv) +valuesk(pic_state *pic, int argc, pic_value *argv) { int i; @@ -123,7 +123,7 @@ pic_callcc(pic_state *pic, pic_value proc) volatile struct cont *cont = pic_alloca_cont(pic); if (PIC_SETJMP(pic, jmp)) { - return values(pic, cont->retc, cont->retv); + return valuesk(pic, cont->retc, cont->retv); } else { pic_value val; @@ -159,7 +159,7 @@ pic_vvalues(pic_state *pic, int n, va_list ap) for (i = 0; i < n; ++i) { retv[i] = va_arg(ap, pic_value); } - return values(pic, n, retv); + return valuesk(pic, n, retv); } int @@ -196,7 +196,7 @@ pic_cont_values(pic_state *pic) pic_get_args(pic, "*", &argc, &argv); - return values(pic, argc, argv); + return valuesk(pic, argc, argv); } static pic_value diff --git a/lib/include/picrin/setup.h b/lib/include/picrin/setup.h index 22b916eb..298f58b5 100644 --- a/lib/include/picrin/setup.h +++ b/lib/include/picrin/setup.h @@ -173,7 +173,7 @@ typedef unsigned long uint32_t; # define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) #endif #if GCC_VERSION >= 40500 || __clang__ -# define PIC_UNREACHABLE() (__builtin_unreachable()) +# define PIC_UNREACHABLE() (assert(false), __builtin_unreachable()) #else # define PIC_UNREACHABLE() (assert(false)) #endif