Szelethus added a comment.
Do we have a test where 2 containers are present but only one of them should be
marked as interesting?
void deref_end_after_pop_back(std::vector<int> &V, std::vector<int> &V2) {
const auto i = --V.end();
const auto i2 = --V2.end();
V.pop_back(); // expected-note{{Container 'V' shrinked from the right by 1
position}}
V2.pop_back(); // no-note
*i; // expected-warning{{Past-the-end iterator dereferenced}}
// expected-note@-1{{Past-the-end iterator dereferenced}}
}
================
Comment at: clang/lib/StaticAnalyzer/Checkers/DebugContainerModeling.cpp:95-103
+ const NoteTag *InterestingTag =
+ C.getNoteTag([Cont](BugReport &BR) -> std::string {
+ auto *PSBR = dyn_cast<PathSensitiveBugReport>(&BR);
+ if (PSBR) {
+ PSBR->markInteresting(Cont);
+ }
+ return "";
----------------
Aha, makes sense, when calling `clang_analyzer_container_end(V)`, we want to
make the analyzer emit more information about `V` so its obviously interesting.
================
Comment at: clang/test/Analysis/container-modeling.cpp:35
////////////////////////////////////////////////////////////////////////////////
///
----------------
I hate to be that guy, but this is quite ugly :). How about the handsome
```
//===--------------------------===//
// Container assignment tests.
//===--------------------------===//
```
But I don't insist, especially within the scope of this patch.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73720/new/
https://reviews.llvm.org/D73720
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits