/* Branch prediction */
#ifdef __GNUC__
-# define likely(p) __builtin_expect(!!(p), 1)
-# define unlikely(p) __builtin_expect(!!(p), 0)
+# define likely(p) __builtin_expect(!!(p), 1)
+# define unlikely(p) __builtin_expect(!!(p), 0)
+# define unreachable() __builtin_unreachable()
#else
-# define likely(p) (!!(p))
-# define unlikely(p) (!!(p))
+# define likely(p) (!!(p))
+# define unlikely(p) (!!(p))
+# define unreachable() ((void)0)
#endif
+#define vlc_assert_unreachable() (assert(!"unreachable"), unreachable())
+
/* Linkage */
#ifdef __cplusplus
# define VLC_EXTERN extern "C"
float f_float;
char * psz_string;
void * p_address;
- vlc_object_t * p_object;
vlc_list_t * p_list;
mtime_t i_time;
struct { int32_t x; int32_t y; } coords;