[PATCH] D67079: [analyzer] CastValueChecker: Model inheritance
Artem Dergachev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 30 13:19:48 PDT 2019
NoQ added inline comments.
================
Comment at: clang/test/Analysis/cast-value-hierarchy-fp-suppression.cpp:25-27
+ if (isa<B>(a))
+ if (isa<C>(a))
+ clang_analyzer_warnIfReached(); // no-warning
----------------
Charusso wrote:
> NoQ wrote:
> > Why is `(isa<B>(a) && isa<C>(a))` deemed possible in the first test but not in the second test? o_o
> In `test_downcast()` we assume that `a` is a record type of `D` where `D` is a `B` and `D` is a `C`. However in `test_downcast_infeasible()` if `a` is not a record type of `D` is cannot be both `B` and `C` at the same time. That is the purpose of `CastVisitor`.
I mean, it contradicts to how the program *actually* works, so we should either not do that, or provide a reeeeeaaaaaallly compelling explanation of why we do this (as in "Extraordinary Claims Require Extraordinary Evidence").
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D67079/new/
https://reviews.llvm.org/D67079
More information about the cfe-commits
mailing list