diff options
| author | Ted Kremenek <kremenek@apple.com> | 2014-10-19 07:30:55 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2014-10-19 07:30:55 +0000 |
| commit | 0c28bc20da65169dac6133be5e230b7c5c0914c1 (patch) | |
| tree | ab2cb8d30a98e28b7164258e7605290c3967f20b /clang/lib/StaticAnalyzer | |
| parent | 11751538678a971a5d261eb0b3af3eafc2361942 (diff) | |
| download | bcm5719-llvm-0c28bc20da65169dac6133be5e230b7c5c0914c1.tar.gz bcm5719-llvm-0c28bc20da65169dac6133be5e230b7c5c0914c1.zip | |
[analyzer] Tweak MallocSizeOfChecker to not warn when using sizeof(void*) to allocate a bunch of any pointer type.
This suppresses a common false positive when analyzing libc++.
Along the way, introduce some tests to show this checker actually
works with C++ static_cast<>.
llvm-svn: 220160
Diffstat (limited to 'clang/lib/StaticAnalyzer')
| -rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/MallocSizeofChecker.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/MallocSizeofChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/MallocSizeofChecker.cpp index 4a50d936287..296aec66805 100644 --- a/clang/lib/StaticAnalyzer/Checkers/MallocSizeofChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/MallocSizeofChecker.cpp @@ -137,6 +137,10 @@ public: // Determine if the pointee and sizeof types are compatible. Here // we ignore constness of pointer types. static bool typesCompatible(ASTContext &C, QualType A, QualType B) { + // sizeof(void*) is compatible with any other pointer. + if (B->isVoidPointerType() && A->getAs<PointerType>()) + return true; + while (true) { A = A.getCanonicalType(); B = B.getCanonicalType(); |

