[PATCH] D66847: [analyzer] Fix analyzer warnings.
Artem Dergachev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 27 17:56:21 PDT 2019
NoQ marked an inline comment as done.
NoQ added a comment.
In D66847#1648209 <https://reviews.llvm.org/D66847#1648209>, @Szelethus wrote:
> > if the dyn_ part is really necessary here, then you crash with a null dereference a few lines below because you didn't check the result
>
> Hmm, can we detect things like this?:
>
> if (isa<FunctionDecl>(D)) {
> const auto *FD = dyn_cast(D); // warn: D is known to be a FunctionDecl, prefer using cast<>
> // ...
> }
>
We should be detecting things like this as of D66325 <https://reviews.llvm.org/D66325> and D66423 <https://reviews.llvm.org/D66423> (we remember which casts were successful and don't re-assume them again), but `LocalizationChecker.cpp` turned out to have a false positive of this kind. @Charusso, you may want to take a look.
================
Comment at: clang/lib/StaticAnalyzer/Checkers/LocalizationChecker.cpp:885-888
- const Decl *D = Call.getDecl();
- if (D && isa<FunctionDecl>(D)) {
- const FunctionDecl *FD = dyn_cast<FunctionDecl>(D);
- auto formals = FD->parameters();
----------------
Note: this was a false positive.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66847/new/
https://reviews.llvm.org/D66847
More information about the cfe-commits
mailing list