ASDenysPetrov added inline comments.
================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1603-1604
+ template <typename SymT>
+ bool handleRem(const SymT *Sym, RangeSet Constraint) {
+ // a % b != 0 implies that a != 0.
----------------
steakhal wrote:
> Why is this not a `const` member function?
IMO it's better to rename the function `handleRemainderOp`.
Add a function description in comments above.
E.g. Handle expressions like: `a % b == 0`. ... Returns `true` when
//bla-bla//, otherwise returns `false`.
================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1609-1612
+ const SymExpr *LHS = Sym->getLHS();
+ const llvm::APSInt &Zero =
+ Builder.getBasicValueFactory().getValue(0, LHS->getType());
+ State = RCM->assumeSymNE(State, LHS, Zero, Zero);
----------------
Maybe make some more complex assumptions to cover complex **LHS's**?
================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1708
ProgramStateRef State;
+ RangeConstraintManager *RCM;
SValBuilder &Builder;
----------------
================
Comment at: clang/test/Analysis/constraint-assignor.c:30
+ (void)x; // keep the constraints alive.
+}
----------------
Add some nested cases like `x % y % z == 0`.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110357/new/
https://reviews.llvm.org/D110357
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits