This revision was automatically updated to reflect the committed changes. Closed by commit rC340598: [FileManager] Do not call 'real_path' in getFile(). (authored by ioeric, committed by ).
Changed prior to commit: https://reviews.llvm.org/D51159?vs=162337&id=162344#toc Repository: rC Clang https://reviews.llvm.org/D51159 Files: lib/Basic/FileManager.cpp Index: lib/Basic/FileManager.cpp =================================================================== --- lib/Basic/FileManager.cpp +++ lib/Basic/FileManager.cpp @@ -316,10 +316,14 @@ UFE.File = std::move(F); UFE.IsValid = true; - SmallString<128> RealPathName; - if (!FS->getRealPath(InterndFileName, RealPathName)) - UFE.RealPathName = RealPathName.str(); - + llvm::SmallString<128> AbsPath(InterndFileName); + // This is not the same as `VFS::getRealPath()`, which resolves symlinks but + // can be very expensive on real file systems. + // FIXME: the semantic of RealPathName is unclear, and the name might be + // misleading. We need to clean up the interface here. + makeAbsolutePath(AbsPath); + llvm::sys::path::remove_dots(AbsPath, /*remove_dot_dot=*/true); + UFE.RealPathName = AbsPath.str(); return &UFE; }
Index: lib/Basic/FileManager.cpp =================================================================== --- lib/Basic/FileManager.cpp +++ lib/Basic/FileManager.cpp @@ -316,10 +316,14 @@ UFE.File = std::move(F); UFE.IsValid = true; - SmallString<128> RealPathName; - if (!FS->getRealPath(InterndFileName, RealPathName)) - UFE.RealPathName = RealPathName.str(); - + llvm::SmallString<128> AbsPath(InterndFileName); + // This is not the same as `VFS::getRealPath()`, which resolves symlinks but + // can be very expensive on real file systems. + // FIXME: the semantic of RealPathName is unclear, and the name might be + // misleading. We need to clean up the interface here. + makeAbsolutePath(AbsPath); + llvm::sys::path::remove_dots(AbsPath, /*remove_dot_dot=*/true); + UFE.RealPathName = AbsPath.str(); return &UFE; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits