[PATCH] -include option and -exclude ignore arguments finishing with '/'

Ariel Bernal ariel.j.bernal at intel.com
Mon Jul 29 22:05:11 PDT 2013



================
Comment at: cpp11-migrate/Core/IncludeExcludeInfo.cpp:53
@@ +52,3 @@
+/// path i.e. "..", ".".
+void RemoveRelativePath(SmallString<64>& AbsPath) {
+  sys::path::const_iterator PathI = sys::path::begin(AbsPath);
----------------
Guillaume Papin wrote:
> Taking a StringRef as argument and returning a string seems more natural to me.
> 
> If this is really needed in terms of performance maybe I will use something like http://llvm.org/docs/doxygen/html/Path_8cpp_source.html#l00696 (taking a SmallVectorImpl).
> 
I agree, I don't think performance will be an issue in this case. I'll use StringRef.

================
Comment at: cpp11-migrate/Core/IncludeExcludeInfo.cpp:56
@@ +55,3 @@
+  sys::path::const_iterator PathE = sys::path::end(AbsPath);
+  std::vector<StringRef> NewPath;
+  while (PathI != PathE) {
----------------
Guillaume Papin wrote:
> Why not SmallVector?
done

================
Comment at: cpp11-migrate/Core/IncludeExcludeInfo.cpp:59
@@ +58,3 @@
+    if (PathI->equals("..")) {
+      NewPath.pop_back();
+      // If this codition is reached then the given path is incorrect.
----------------
Guillaume Papin wrote:
> Shouldn't you check the stack size before doing a pop_back() instead?
> 
yes, I got this one in the new patch

================
Comment at: cpp11-migrate/Core/IncludeExcludeInfo.cpp:62
@@ +61,3 @@
+      if (NewPath.size() == 0) {
+        llvm::errs() << "Incorrect path provided: " << AbsPath << "\n";
+        AbsPath = "";
----------------
Guillaume Papin wrote:
> Does this error message helps the user?
> Maybe if we are sure make_absolute is called beforehand change this to an assert? Unless make_absolute can produce some "wrong" paths.
we can't rely on make_absolute since the user can specify ../../.. till the root is reached. We could silently return an empty path and remove it from the list but I think it's better if at least we provide some feedback.

================
Comment at: cpp11-migrate/Core/IncludeExcludeInfo.cpp:72-73
@@ +71,4 @@
+  AbsPath = "";
+  for (std::vector<StringRef>::iterator I = NewPath.begin(),
+                                      E = NewPath.end();
+       I != E; ++I) {
----------------
Guillaume Papin wrote:
> Is it Phabricator or the indentation is incorrect here?
already fixed

================
Comment at: cpp11-migrate/Core/IncludeExcludeInfo.cpp:95
@@ -70,1 +94,3 @@
+    // Add only non-empty paths to the list.
+    if (Path.size() > 0)
       List.push_back(Path.str());
----------------
Guillaume Papin wrote:
> Path.empty()
done


http://llvm-reviews.chandlerc.com/D1134



More information about the cfe-commits mailing list