From a47c68164d77c26d122672fcc073c13c3b53bf14 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Sun, 25 Feb 2018 19:19:20 -0500 Subject: [PATCH] compiler: never omit assertions if using a static analysis tool 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. Backports commit 8bff06a0bbf257a2083223534c1607bf87d913e6 from qemu --- qemu/include/qemu/compiler.h | 4 ++++ qemu/tcg/tcg.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/qemu/include/qemu/compiler.h b/qemu/include/qemu/compiler.h index ff65f3af..a6cee22e 100644 --- a/qemu/include/qemu/compiler.h +++ b/qemu/include/qemu/compiler.h @@ -67,6 +67,10 @@ static union MSVC_FLOAT_HACK __NAN = {{0x00, 0x00, 0xC0, 0x7F}}; #define NAN (0.0 / 0.0) #endif +#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. | The code is a copy of SOFTFLOAT_GNUC_PREREQ, see softfloat-macros.h. diff --git a/qemu/tcg/tcg.h b/qemu/tcg/tcg.h index f65dc505..39f56ec7 100644 --- a/qemu/tcg/tcg.h +++ b/qemu/tcg/tcg.h @@ -193,7 +193,7 @@ typedef uint64_t tcg_insn_unit; /* The port better have done this. */ #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) \