[PATCH] D103096: [analyzer] Implement cast for ranges of symbolic integers
Gabor Marton via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 29 03:04:37 PDT 2022
martong added inline comments.
================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1289-1291
+ auto It = llvm::find_if(*CM, [MinBitWidth](CastMap::value_type &Item) {
+ return Item.first >= MinBitWidth;
+ });
----------------
There might be a problem here because the iteration of the map is non-deterministic. We should probably have a copy that is sorted, or the container should be sorted (sorted immutable list maybe?).
Your tests below passed probably because the cast chains are too small. Could you please have a test, where the chain is really long (20 maybe) and shuffled.
(My thanks for @steakhal for this additional comment.)
================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:2300-2303
+ for (auto &Item : *CM) {
+ // Stop after reaching a bigger bitwidth.
+ if (Item.first > MinBitWidth)
+ break;
----------------
Same here.
================
Comment at: clang/test/Analysis/symbol-integral-cast.cpp:31
+ if (!s) {
+ if (x == 65537)
+ clang_analyzer_warnIfReached(); // no-warning
----------------
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D103096/new/
https://reviews.llvm.org/D103096
More information about the cfe-commits
mailing list