]> granicus.if.org Git - clang/commitdiff
Revert 124754 and 124760 as they made clang unusable in the presence of symbolic
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 3 Feb 2011 04:35:45 +0000 (04:35 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 3 Feb 2011 04:35:45 +0000 (04:35 +0000)
links.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124776 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/FileManager.cpp

index 53d7c9a6bd552afdf7033a0245345d8d2939697f..cbe90bfdc167be89f0a3a3685428f3e07e311360 100644 (file)
@@ -271,91 +271,10 @@ const DirectoryEntry *FileManager::getDirectory(llvm::StringRef Filename) {
   return &UDE;
 }
 
-/// \brief Canonicalize a file or path name by eliminating redundant
-/// "foo/.." and "./" path components.
-///
-/// Uses the given scratch space to store the resulting string, if needed.
-static llvm::StringRef CanonicalizeFileName(llvm::StringRef Filename, 
-                                            llvm::SmallVectorImpl<char> &Scratch) {
-  size_t Start = 0;
-  bool Changed = false;
-  size_t FirstSlash = Filename.find('/', Start);
-  do {
-    if (FirstSlash == llvm::StringRef::npos) {
-      // No more components. Just copy the rest of the file name, if
-      // we need to.
-      if (Changed)
-        Scratch.append(Filename.begin() + Start, Filename.end());
-      break;
-    }
-
-    if (Start + 1 == FirstSlash && Filename[Start] == '.') {
-      // We have './'; remove it.
-      
-      // If we haven't changed anything previously, copy the
-      // starting bits here.
-      if (!Changed) {
-        Scratch.clear();
-        Scratch.append(Filename.begin(), Filename.begin() + Start);
-        Changed = true;
-      }
-      
-      // Skip over the './'.
-      Start = FirstSlash + 1;
-      FirstSlash = Filename.find('/', Start);
-      continue;
-    }
-    
-    size_t SecondSlash = Filename.find('/', FirstSlash + 1);
-    if (SecondSlash != llvm::StringRef::npos &&
-        SecondSlash - FirstSlash == 3 &&
-        Filename[FirstSlash + 1] == '.' &&
-        Filename[FirstSlash + 2] == '.') {
-      // We have 'foo/../'; remove it.
-      
-      // If we haven't changed anything previously, copy the
-      // starting bits here.
-      if (!Changed) {
-        Scratch.clear();
-        Scratch.append(Filename.begin(), Filename.begin() + Start);
-        Changed = true;
-      }
-      
-      // Skip over the 'foo/..'.
-      Start = SecondSlash + 1;
-      FirstSlash = Filename.find('/', Start);
-      continue;
-    }
-
-    if (Changed)
-      Scratch.append(Filename.begin() + Start, 
-                     Filename.begin() + FirstSlash + 1);
-    Start = FirstSlash + 1;
-
-    if (SecondSlash == llvm::StringRef::npos)
-      FirstSlash = Filename.find('/', Start);
-    else
-      FirstSlash = SecondSlash;
-  } while (true);
-
-  if (Changed) {
-#if 0
-    llvm::errs() << "Canonicalized \"" << Filename << "\" to \""
-                 << llvm::StringRef(Scratch.data(), Scratch.size()) << "\"\n";
-#endif
-    return llvm::StringRef(Scratch.data(), Scratch.size());
-  }
-
-  return Filename;
-}
-
 /// getFile - Lookup, cache, and verify the specified file.  This returns null
 /// if the file doesn't exist.
 ///
 const FileEntry *FileManager::getFile(llvm::StringRef Filename) {
-  llvm::SmallString<128> FilenameScratch;
-  Filename = CanonicalizeFileName(Filename, FilenameScratch);
-
   ++NumFileLookups;
 
   // See if there is already an entry in the map.
@@ -424,9 +343,6 @@ const FileEntry *FileManager::getFile(llvm::StringRef Filename) {
 const FileEntry *
 FileManager::getVirtualFile(llvm::StringRef Filename, off_t Size,
                             time_t ModificationTime) {
-  llvm::SmallString<128> FilenameScratch;
-  Filename = CanonicalizeFileName(Filename, FilenameScratch);
-
   ++NumFileLookups;
 
   // See if there is already an entry in the map.