martong added a comment. I had to move the definition of `ConstraintAssignor` after the definition of `RangeConstraintManager` b/c I am using `assumeSymNE` in the new logic. Unfortunately, the diff does not show clearly the changes inside the moved hunk, so I try to indicate the important changes with a `New code` comment.
================ Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1593 + LLVM_NODISCARD static ProgramStateRef + assign(ProgramStateRef State, RangeConstraintManager *RCM, + SValBuilder &Builder, RangeSet::Factory &F, ClassOrSymbol CoS, ---------------- New code ================ Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1603-1617 + template <typename SymT> + bool handleRem(const SymT *Sym, RangeSet Constraint) { + // a % b != 0 implies that a != 0. + if (Sym->getOpcode() != BO_Rem) + return true; + if (!Constraint.containsZero()) { + const SymExpr *LHS = Sym->getLHS(); ---------------- New code ================ Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1620-1623 + inline bool assignSymIntExprToRangeSet(const SymIntExpr *Sym, + RangeSet Constraint) { + return handleRem(Sym, Constraint); + } ---------------- New code 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