[PATCH] D80117: [analyzer] Introduce reasoning about symbolic remainder operator

Artem Dergachev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon May 18 09:40:06 PDT 2020


NoQ added inline comments.


================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:459
+    bool CoversTheWholeType =
+        (Origin.From().isMinSignedValue() || Origin.To().isMaxValue());
+
----------------
vsavchenko wrote:
> NoQ wrote:
> > `(Origin.From() + 1).isMinSignedValue()` is another sufficient condition(?)
> I'm sorry, I don't quite get what cases does this check cover.  Can you please explain what you have in mind?
Aha, ok, nvm, a different issue then: For range `[INT_MIN + 1, INT_MAX]`, the correct answer should be ``[INT_MIN + 1, INT_MAX]` (which is `[-C, C]` for `C = INT_MAX]`) rather than `[INT_MIN, INT_MAX]`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D80117/new/

https://reviews.llvm.org/D80117





More information about the cfe-commits mailing list