Skip to content

Commit

Permalink
compiler: never omit assertions if using a static analysis tool
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
bonzini committed Jul 17, 2016
1 parent 3cbeb52 commit 8bff06a
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 1 deletion.
3 changes: 3 additions & 0 deletions include/qemu/compiler.h
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion tcg/tcg.h
Expand Up @@ -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) \
Expand Down

0 comments on commit 8bff06a

Please sign in to comment.