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.
pull/1/head
Damien George 2019-08-19 15:50:02 +10:00
parent af5c998f37
commit 0c80cb39af
2 changed files with 10 additions and 5 deletions

View File

@ -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) ))

View File

@ -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