[PATCH] D7375: [clang-tidy] Assert related checkers

Roman Lebedev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Dec 13 05:47:23 PST 2017


lebedev.ri added inline comments.
Herald added a subscriber: mgorny.


================
Comment at: test/clang-tidy/misc-static-assert.cpp:71
+
+  assert(ZERO_MACRO && "Report me!");
+  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: found assert() that could be
----------------
Hmm. Are you sure about this?
I'm having false-positives (as far i'm concerned at least) due to this.

In particular with `<sanitizer/asan_interface.h>`. If the build is with asan,
then i can include the header and use e.g. `__asan_region_is_poisoned()`
But if it is not, i can't do that. So i need to wrap it into a macro, which expands
to `__asan_region_is_poisoned()` if the build is with asan, and to some constant
(e.g. `0`) otherwise. And the check, naturally, does not like this.

As a minimal reproducer:
```
#ifndef MYDEFINE
#define mycheck(x) 0
#define notmycheck(x) 1
#else
int __mycheck(int x);
int __notmycheck(int x);
#define mycheck(x) __mycheck(x)
#define notmycheck(x) __notmycheck(x)
#endif

void f(int x) {
  assert(!mycheck(x));
  assert(!notmycheck(x));
  assert(mycheck(x));
  assert(notmycheck(x));
}
```
I'd expect the check to not warn regardless of `MYDEFINE` presence.


https://reviews.llvm.org/D7375





More information about the cfe-commits mailing list