alexfh added a comment.

Thanks for addressing the comments. The code looks better now. My main concern 
at this point is that the name and the location of the check: "misc" is a place 
for the stuff we can't find a better place for, but here I guess we clearly 
want a separate module and a subdirectory for MPI-related checks 
(MPITidyModule, "mpi/"). The check name should be updated accordingly: 
"mpi-type-mismatch".

A few more comments inline.


================
Comment at: clang-tidy/misc/MpiTypeMismatchCheck.cpp:212
@@ +211,3 @@
+
+  static std::map<std::string, std::string> FixedWidthMatches = {
+      {"int8_t", "MPI_INT8_T"},     {"int16_t", "MPI_INT16_T"},
----------------
`llvm::StringMap` should be more efficient here.

================
Comment at: clang-tidy/misc/MpiTypeMismatchCheck.cpp:218
@@ +217,3 @@
+
+  StringRef TypedefToCompare = Typedef->getDecl()->getQualifiedNameAsString();
+  // Check if the typedef is known and not matching the MPI datatype.
----------------
`getQualifiedNameAsString` returns a `std::string`, which will be destroyed at 
the end of this statement. `TypedefToCompare` will be a dangling reference 
then. Please change `StringRef` to `std::string` here.

Another question is whether you need `getQualifiedNameAsString`, which is 
rather expensive. Maybe you could use `getName` (it returns a `StringRef` and 
is relatively cheap) and additionally check that the name is in the global 
namespace?

================
Comment at: clang-tidy/misc/MpiTypeMismatchCheck.cpp:220
@@ +219,3 @@
+  // Check if the typedef is known and not matching the MPI datatype.
+  if (FixedWidthMatches.find(TypedefToCompare) != FixedWidthMatches.end() &&
+      FixedWidthMatches.at(TypedefToCompare) != MPIDatatype) {
----------------
Repeated lookups into a map are wasteful. Please store the result of `find` and 
use it to get the value.


https://reviews.llvm.org/D21962



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

Reply via email to