[PATCH] D32859: [Analyzer] Iterator Checker - Part 5: Move Assignment of Containers

Artem Dergachev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 14 15:59:14 PST 2017

NoQ added inline comments.
Herald added subscribers: a.sidorin, rnkovacs, szepet.

Comment at: lib/StaticAnalyzer/Checkers/IteratorChecker.cpp:1489-1511
+SymbolRef replaceSymbol(SymbolManager &SymMgr, SymbolRef OrigExpr,
+                        SymbolRef OldExpr, SymbolRef NewSym) {
+  // We have a symbolic expression in the format of A+n, where we want to
+  // replace A+m with B, so the result becomes B+k, where k==n-m.
+  SymbolRef OrigSym, OldSym;
+  llvm::APSInt OrigInt, OldInt;
+  std::tie(OrigSym, OrigInt) = decompose(OrigExpr);
I do not immediately understand what is this useful for. At least tests don't look like they make use of these offset manipulations(?)

Without full understanding, i wonder: when we overwrite one container with another, why don't we just overwrite //all// symbols associated with it, instead of creating a mixture of old and new symbols?

Or maybe this is an accidental part of another patch, that has something to do with resizes?


More information about the cfe-commits mailing list