klimek added inline comments.

================
Comment at: lib/Basic/FileManager.cpp:167-168
     DirNameStr = DirName.str() + '.';
+    llvm::sys::path::native(DirNameStr);
+    DirName = DirNameStr;
+  } else {
----------------
I'd add a canonicalizePath function that:
-> on unix just returns the path
-> on windows, does the ::native dance and returns that path

Then we can call that when we access the cache or write to the cache instead of 
sprinkling #ifdefs around.


================
Comment at: lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:1716-1717
     Loc = Loc.getSpellingLoc();
-    if (SM.getFilename(Loc).endswith("sys/queue.h")) {
+       StringRef FN = SM.getFilename(Loc);
+    if (FN.endswith("sys/queue.h") || FN.endswith("sys\\queue.h")) {
       BR.markInvalid(getTag(), nullptr);
----------------
I'd do changes like this in a separate patch.


================
Comment at: test/CodeGen/debug-prefix-map.c:21
 // CHECK-NO-MAIN-FILE-NAME: !DIFile(filename: "/var/empty{{[/\\]}}{{.*}}"
-// CHECK-NO-MAIN-FILE-NAME: !DIFile(filename: 
"/var/empty{{[/\\]}}Inputs/stdio.h"
+// CHECK-NO-MAIN-FILE-NAME: !DIFile(filename: 
"/var/empty{{/|\\5C}}Inputs{{/|\\5C}}stdio.h"
 // CHECK-NO-MAIN-FILE-NAME-NOT: !DIFile(filename:
----------------
That is super unfortunate.
If we want tests to be able to run on windows, I think we might just want to 
give clang a flag to always show paths in unix format. That also should be 
something we could just make the file manager do (I think whatever the 
filemanager stores will be what is visible to the user).


https://reviews.llvm.org/D27810



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

Reply via email to