[PATCH] D12761: MPI-Checker patch for Clang Static Analyzer

Alexander Droste via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 25 01:45:35 PST 2016


Alexander_Droste marked 36 inline comments as done.

================
Comment at: tools/clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPICheckerPathSensitive.cpp:79
@@ +78,3 @@
+  if (!ReqRegions.empty()) {
+    Ctx.addTransition(State);
+  }
----------------
Alexander_Droste wrote:
> zaks.anna wrote:
> > Don't forget to specify a predecessor here once the code above changes.
> Will do.
Changed this to the same ErrorNode/State pattern like in `checkMissingWaits`.

================
Comment at: tools/clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIFunctionClassifier.h:45
@@ +44,3 @@
+  bool isAllgatherType(const clang::IdentifierInfo *const IdentInfo) const;
+  bool isAlltoallType(const clang::IdentifierInfo *const IdentInfo) const;
+  bool isReduceType(const clang::IdentifierInfo *const IdentInfo) const;
----------------
Alexander_Droste wrote:
> zaks.anna wrote:
> > Some of these classifier functions are not used either..
> These model distinct MPI function classes. I agree that it would be better to remove the unused ones, in order to keep the interface as narrow as possible.
I'd like to keep some of the classes/identifiers that are not used in this patch 
but will be in the clang-tidy patch, as discussed with Alexander Kornienko.

================
Comment at: tools/clang/test/Analysis/MPIChecker.cpp:112
@@ +111,3 @@
+  MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
+              &sendReq1); // Request is previously used by nonblocking call here.
+} // expected-warning{{Request 'sendReq1' has no matching wait.}}
----------------
Alexander_Droste wrote:
> zaks.anna wrote:
> > This is not testing the extra information provided by bug reporter visitor; you should use "// expected-note {...}"
> I didn't know about `expected-note`, thanks!
I changed the plain comments to `// expected-note{{..}}` but all tests using an expected note fail by claiming:

```error: 'note' diagnostics expected but not seen:
File .../MPIChecker.cpp Line 112: Request is previously used by nonblocking call here.```

Though, running the MPI-Checker on this function, the HTML report contains this exact note 
at the expected position. The output is produced at the end of `MPIBugReporter::RequestNodeVisitor::VisitNode`.

Is there something missing, in order to make this an expected note?


http://reviews.llvm.org/D12761





More information about the cfe-commits mailing list