[PATCH] D37809: [analyzer] PthreadLock: Refactor, use PostCall API. NFC.

Aleksei Sidorin via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 13 08:14:24 PST 2017


a.sidorin added a comment.

I like this refactoring. I wrote some things that are not clear for me inline.



================
Comment at: lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp:107
+  void TryXNULock(const CallEvent &Call, CheckerContext &C) const;
+  void AcquireLockAux(const CallEvent &Call, CheckerContext &C, unsigned ArgNo,
+                      SVal lock, bool isTryLock,
----------------
In the code below `lock` is always `Call.getSVal(ArgNo)`. Should we remove it and put SVal acquisition into callees?


================
Comment at: lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp:108
+  void AcquireLockAux(const CallEvent &Call, CheckerContext &C, unsigned ArgNo,
+                      SVal lock, bool isTryLock,
+                      enum LockingSemantics semantics) const;
----------------
According to naming conventions , it should be Lock and IsTryLock. But I'm not sure that this corresponds to the file's code style so I do not insist.


================
Comment at: lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp:188
+    if (Call.isCalled(I.Name))
+      (this->*I.Callback)(Call, C);
+  }
----------------
break?


================
Comment at: lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp:262
+                                            CheckerContext &C) const {
+  AcquireLockAux(Call, C, 0, Call.getArgSVal(0), false, PthreadSemantics);
+}
----------------
Could you add comments describing what arguments should do? I.e. `/* ArgNo= */ 0, /* Lock= */...? It's hard to remember what do these parameters correspond to.


https://reviews.llvm.org/D37809





More information about the cfe-commits mailing list