On 24.09.19 00:59, Richard Henderson wrote: > Use this as a compile-time assert that a particular > code path is not reachable. > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > include/qemu/compiler.h | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h > index 20780e722d..6604ccea92 100644 > --- a/include/qemu/compiler.h > +++ b/include/qemu/compiler.h > @@ -221,4 +221,19 @@ > #define QEMU_GENERIC9(x, a0, ...) QEMU_GENERIC_IF(x, a0, QEMU_GENERIC8(x, > __VA_ARGS__)) > #define QEMU_GENERIC10(x, a0, ...) QEMU_GENERIC_IF(x, a0, QEMU_GENERIC9(x, > __VA_ARGS__)) > > +/** > + * optimize_away()
I would have used the compiler-speak "optimized_out()" instead. > + * > + * The compiler, during optimization, is expected to prove that a call > + * to this function cannot be reached and remove it. If the compiler > + * supports QEMU_ERROR, this will be reported at compile time; otherwise > + * this will be reported at link time, due to the missing symbol. > + */ > +#ifdef __OPTIMIZE__ > +extern void QEMU_NORETURN QEMU_ERROR("code path is reachable") > + optimize_away(void); > +#else > +#define optimize_away() g_assert_not_reached() > +#endif > + > #endif /* COMPILER_H */ > Apart from that looks good to me. -- Thanks, David / dhildenb