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. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
3cbeb52467
commit
8bff06a0bb
@ -3,6 +3,9 @@
|
|||||||
#ifndef COMPILER_H
|
#ifndef COMPILER_H
|
||||||
#define 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.
|
| The macro QEMU_GNUC_PREREQ tests for minimum version of the GNU C compiler.
|
||||||
|
@ -191,7 +191,7 @@ typedef uint64_t tcg_insn_unit;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_TCG
|
#if defined CONFIG_DEBUG_TCG || defined QEMU_STATIC_ANALYSIS
|
||||||
# define tcg_debug_assert(X) do { assert(X); } while (0)
|
# define tcg_debug_assert(X) do { assert(X); } while (0)
|
||||||
#elif QEMU_GNUC_PREREQ(4, 5)
|
#elif QEMU_GNUC_PREREQ(4, 5)
|
||||||
# define tcg_debug_assert(X) \
|
# define tcg_debug_assert(X) \
|
||||||
|
Loading…
Reference in New Issue
Block a user