summaryrefslogtreecommitdiff
path: root/py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2019-08-19 15:50:02 +1000
committerDamien George <damien.p.george@gmail.com>2019-08-19 16:14:33 +1000
commit0c80cb39af7a0f6b0ad73d38bf28a8fc1f50b3c7 (patch)
tree6bd823c1b3e6471cb49fc4124978909169f6d31d /py
parentaf5c998f37ddc62abfd36e0b8be511c392fc25d8 (diff)
py: Introduce MP_UNREACHABLE macro to annotate unreachable code.
And use it to replace the same pattern at the end of nlrthumb.c:nlr_jump.
Diffstat (limited to 'py')
-rw-r--r--py/mpconfig.h9
-rw-r--r--py/nlrthumb.c6
2 files changed, 10 insertions, 5 deletions
diff --git a/py/mpconfig.h b/py/mpconfig.h
index a21a6c707..e8f60bd77 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -1527,6 +1527,15 @@ typedef double mp_float_t;
#define MP_UNLIKELY(x) __builtin_expect((x), 0)
#endif
+// To annotate that code is unreachable
+#ifndef MP_UNREACHABLE
+#if defined(__GNUC__)
+#define MP_UNREACHABLE __builtin_unreachable();
+#else
+#define MP_UNREACHABLE for (;;);
+#endif
+#endif
+
#ifndef MP_HTOBE16
#if MP_ENDIANNESS_LITTLE
# define MP_HTOBE16(x) ((uint16_t)( (((x) & 0xff) << 8) | (((x) >> 8) & 0xff) ))
diff --git a/py/nlrthumb.c b/py/nlrthumb.c
index eef05229d..bc3038827 100644
--- a/py/nlrthumb.c
+++ b/py/nlrthumb.c
@@ -135,11 +135,7 @@ NORETURN void nlr_jump(void *val) {
: // clobbered registers
);
- #if defined(__GNUC__)
- __builtin_unreachable();
- #else
- for (;;); // needed to silence compiler warning
- #endif
+ MP_UNREACHABLE
}
#endif // MICROPY_NLR_THUMB