martong marked an inline comment as done.
martong added inline comments.

================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1618-1627
+    const SymbolRef LHS = Sym->getLHS();
+    const llvm::APSInt &Zero =
+        Builder.getBasicValueFactory().getValue(0, Sym->getType());
+    // a % b != 0 implies that a != 0.
+    if (!Constraint.containsZero()) {
+      State = RCM.assumeSymNE(State, LHS, Zero, Zero);
+      if (!State)
----------------
ASDenysPetrov wrote:
> How about using the family of `ProgramState::isNonNull` or 
> `ProgramState::isNull` or `RangeConstraintManager::checkNull` functoins for 
> this stuff?
I've been checking this and turend out that `ProgramState::isNull` does not 
modify the State (this is aligned with being a `const` member function). So, 
these functions do not "assume" anything, they can be used only to query some 
property of an SVal (or Symbol) from the State.

However, this comment and your other previous comment made me to do further 
investigations towards exploiting the "assume" machinery better. The result is 
a new child patch, where we can handle "adjustments" as well.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110357

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to