summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/FileManager.cpp
diff options
context:
space:
mode:
authorNAKAMURA Takumi <geek4civic@gmail.com>2012-06-16 06:04:10 +0000
committerNAKAMURA Takumi <geek4civic@gmail.com>2012-06-16 06:04:10 +0000
commit8bd8ee76486f6bf46e123d6c9e09d5c2ccc86442 (patch)
treeb24767661ff018698d582a0a9635cf3d5a336c07 /clang/lib/Basic/FileManager.cpp
parentfdf9d7197b0fc0da7fc89fc4ec10707b88c3940b (diff)
downloadbcm5719-llvm-8bd8ee76486f6bf46e123d6c9e09d5c2ccc86442.tar.gz
bcm5719-llvm-8bd8ee76486f6bf46e123d6c9e09d5c2ccc86442.zip
clang/lib/Basic/FileManager.cpp: Detect the root directory with PathV2. It should be better fix for PR10331, or, "clang X:\foo.c" fails.
llvm-svn: 158596
Diffstat (limited to 'clang/lib/Basic/FileManager.cpp')
-rw-r--r--clang/lib/Basic/FileManager.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp
index 5b9769dbb95..75333f8fb55 100644
--- a/clang/lib/Basic/FileManager.cpp
+++ b/clang/lib/Basic/FileManager.cpp
@@ -261,10 +261,12 @@ void FileManager::addAncestorsAsVirtualDirs(StringRef Path) {
const DirectoryEntry *FileManager::getDirectory(StringRef DirName,
bool CacheFailure) {
- // stat doesn't like trailing separators.
+ // stat doesn't like trailing separators except for root directory.
// At least, on Win32 MSVCRT, stat() cannot strip trailing '/'.
// (though it can strip '\\')
- if (DirName.size() > 1 && llvm::sys::path::is_separator(DirName.back()))
+ if (DirName.size() > 1 &&
+ DirName != llvm::sys::path::root_path(DirName) &&
+ llvm::sys::path::is_separator(DirName.back()))
DirName = DirName.substr(0, DirName.size()-1);
++NumDirLookups;
OpenPOWER on IntegriCloud