teemperor added a comment.

See my inline comments about technical changes, but otherwise this looks ready 
to land. Please update and I'll give green light ASAP. Thanks!



================
Comment at: lib/Analysis/CloneDetection.cpp:375
+    const Decl *D = S.getContainingDecl();
+    const SourceManager &SM = D->getASTContext().getSourceManager();
+    std::string Filename = std::string(SM.getFilename(D->getLocation()));
----------------
You can skip the `const Decl *D = S.getContainingDecl();` and just do `const 
SourceManager &SM = S.getASTContext().getSourceManager();`


================
Comment at: lib/Analysis/CloneDetection.cpp:378
+    // Get Basename
+    const size_t LastSlash = Filename.find_last_of("\\/");
+    if (LastSlash != std::string::npos)
----------------
Let's get the basename with the LLVM path class instead:
 
http://llvm.org/docs/doxygen/html/namespacellvm_1_1sys_1_1path.html#a799b002e67dcf41330fa8d6fa11823dc

E.g. `moc_test\.cpp` is a valid filename on Linux and then this code isn't 
doing the right thing.


================
Comment at: lib/Analysis/CloneDetection.cpp:383
+    if (LastDot != std::string::npos)
+      Filename.erase(LastDot);
+    llvm::Regex R(StringRef("^(" + IgnoredFilesPattern.str() + "$)"));
----------------
Hmm, we can't filter by file extension this way? Can we remove this extension 
stripping and just make people type the file extension in the filter, this 
feels more intuitive.


================
Comment at: lib/Analysis/CloneDetection.cpp:384
+      Filename.erase(LastDot);
+    llvm::Regex R(StringRef("^(" + IgnoredFilesPattern.str() + "$)"));
+    if (R.match(StringRef(Filename)))
----------------
Artem suggested we could move this Regex out of the loop, I think we should 
even make it a member of the AutoGeneratedCloneConstraint so that we only 
parse/generate the regex state machine once per invocation. Currently we 
reparse this Regex a few thousand times and performance is quite important in 
this Checker.


Repository:
  rL LLVM

https://reviews.llvm.org/D31320



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

Reply via email to