summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Henderson2022-10-22 13:34:12 +0200
committerRichard Henderson2022-10-26 03:11:28 +0200
commitd44e3737f937c0d0da1ad18d7b48bfc3ed885e1a (patch)
tree893db5157f61feb55820a6a13a3bc678d9713102
parentaccel/tcg: Add a quicker check for breakpoints (diff)
downloadqemu-d44e3737f937c0d0da1ad18d7b48bfc3ed885e1a.tar.gz
qemu-d44e3737f937c0d0da1ad18d7b48bfc3ed885e1a.tar.xz
qemu-d44e3737f937c0d0da1ad18d7b48bfc3ed885e1a.zip
include/qemu/osdep: Add qemu_build_assert
This differs from assert, in that with optimization enabled it triggers at build-time. It differs from QEMU_BUILD_BUG_ON, aka _Static_assert, in that it is sensitive to control flow and is subject to dead-code elimination. Acked-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
-rw-r--r--include/qemu/osdep.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index b1c161c035..2276094729 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -186,6 +186,14 @@ void QEMU_ERROR("code path is reachable")
#define qemu_build_not_reached() g_assert_not_reached()
#endif
+/**
+ * qemu_build_assert()
+ *
+ * The compiler, during optimization, is expected to prove that the
+ * assertion is true.
+ */
+#define qemu_build_assert(test) while (!(test)) qemu_build_not_reached()
+
/*
* According to waitpid man page:
* WCOREDUMP