[PATCH] D35110: [Analyzer] Constraint Manager Negates Difference
Artem Dergachev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 27 20:29:57 PDT 2018
NoQ added inline comments.
================
Comment at: lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:265-276
+ const llvm::APSInt &from = i->From(), &to = i->To();
+ const llvm::APSInt &newFrom = (to.isMinSignedValue() ?
+ BV.getMaxValue(to) :
+ (to.isMaxSignedValue() ?
+ BV.getMinValue(to) :
+ BV.getValue(- to)));
+ const llvm::APSInt &newTo = (from.isMinSignedValue() ?
----------------
Hmm, wait a minute, is this actually correct?
For the range [-2³¹, -2³¹ + 1] over a 32-bit integer, the negated range will be [-2³¹, -2³¹] U [2³¹ - 1, 2³¹ - 1].
So there must be a place in the code where we take one range and add two ranges.
https://reviews.llvm.org/D35110
More information about the cfe-commits
mailing list