NoQ added a comment.

Hello, sorry for your having to wait on me. The implementation looks good, i'm 
only having a couple of public API concerns.



================
Comment at: 
include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h:46-49
+bool isExprResultConformsComparisonRule(CheckerContext &C,
+                                        BinaryOperatorKind CompRule,
+                                        const Expr *LHSExpr, const SVal 
RHSVal);
+bool isGreaterEqual(CheckerContext &C, const Expr *E, unsigned long long Val);
----------------
Because you are making these functions public, i think it's worth it to make it 
obvious what they do without looking at the particular checker code. Comments 
are definitely worth it. I think function names could be worded better; i 
suggest `exprComparesTo(const Expr *LHSExpr, BinaryOperatorKind ComparisonOp, 
SVal RHSVal, CheckerContext &C);` and `isGreaterOrEqual(...)`; i'm personally 
fond of having CheckerContext at the back because that's where we have it in 
checker callbacks, but that's not important.


================
Comment at: lib/StaticAnalyzer/Core/CheckerHelpers.cpp:101
+    const SVal RHSVal) {
+  ProgramStateRef State = C.getState();
+
----------------
I believe it is enough to pass only `State` to this function. `SValBuilder` and 
`ConstraintManager` objects can be obtained from the state's 
`ProgramStateManager`. The good thing about requiring only `State` is that we'd 
be able to use these functions in checker callbacks that don't provide the 
`CheckerContext` object, eg. `checkEndAnalysis` or `checkRegionChanges`.


Repository:
  rL LLVM

https://reviews.llvm.org/D30295



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

Reply via email to