]> Git Repo - qemu.git/commitdiff
compiler: never omit assertions if using a static analysis tool
authorPaolo Bonzini <[email protected]>
Fri, 15 Jul 2016 16:27:40 +0000 (18:27 +0200)
committerPaolo Bonzini <[email protected]>
Sun, 17 Jul 2016 07:59:21 +0000 (09:59 +0200)
Assertions help both Coverity and the clang static analyzer avoid
false positives, but on the other hand both are confused when
the condition is compiled as (void)(x != FOO).  Always expand
assertion macros when using Coverity or clang, through a new
QEMU_STATIC_ANALYSIS preprocessor symbol.

This fixes a couple false positives in TCG.

Signed-off-by: Paolo Bonzini <[email protected]>
include/qemu/compiler.h
tcg/tcg.h

index b64f89987091fb1784f19cda8acd1c9c8201a186..338d3a65b37dca7f1b3f844e4a77758b3f61b1a7 100644 (file)
@@ -3,6 +3,9 @@
 #ifndef COMPILER_H
 #define COMPILER_H
 
+#if defined __clang_analyzer__ || defined __COVERITY__
+#define QEMU_STATIC_ANALYSIS 1
+#endif
 
 /*----------------------------------------------------------------------------
 | The macro QEMU_GNUC_PREREQ tests for minimum version of the GNU C compiler.
index 66ae0c76e67e786172a21ba50228e375c6be4c1b..6046dcdc89482ce6854a03dd3fe32aeaa2173a5f 100644 (file)
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -191,7 +191,7 @@ typedef uint64_t tcg_insn_unit;
 #endif
 
 
-#ifdef CONFIG_DEBUG_TCG
+#if defined CONFIG_DEBUG_TCG || defined QEMU_STATIC_ANALYSIS
 # define tcg_debug_assert(X) do { assert(X); } while (0)
 #elif QEMU_GNUC_PREREQ(4, 5)
 # define tcg_debug_assert(X) \
This page took 0.032452 seconds and 4 git commands to generate.