[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 03/16] qemu/compiler.h: Add optimize_away
From: |
Richard Henderson |
Subject: |
[PATCH v4 03/16] qemu/compiler.h: Add optimize_away |
Date: |
Mon, 23 Sep 2019 15:59:51 -0700 |
Use this as a compile-time assert that a particular
code path is not reachable.
Signed-off-by: Richard Henderson <address@hidden>
---
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()
+ *
+ * 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 */
--
2.17.1