]> granicus.if.org Git - clang/commitdiff
Revert "Honour 'use-external-names' in FileManager"
authorBen Langmuir <blangmuir@apple.com>
Thu, 27 Feb 2014 23:48:03 +0000 (23:48 +0000)
committerBen Langmuir <blangmuir@apple.com>
Thu, 27 Feb 2014 23:48:03 +0000 (23:48 +0000)
Revert r202442, which broke the buildbots.

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

include/clang/Basic/FileManager.h
include/clang/Basic/FileSystemStatCache.h
include/clang/Basic/VirtualFileSystem.h
lib/Basic/FileManager.cpp
lib/Basic/FileSystemStatCache.cpp
lib/Basic/VirtualFileSystem.cpp
lib/Lex/PTHLexer.cpp
test/VFS/Inputs/external-names.h [deleted file]
test/VFS/Inputs/use-external-names.yaml [deleted file]
test/VFS/external-names.c [deleted file]
unittests/Basic/FileManagerTest.cpp

index ddf78c86def9372c933fbc4838c8375ac62f40d0..b5b7231e13c36cddc2621914cf82928d266b8300 100644 (file)
@@ -59,7 +59,7 @@ public:
 /// If the 'File' member is valid, then this FileEntry has an open file
 /// descriptor for the file.
 class FileEntry {
-  std::string Name;           // Name of the file.
+  const char *Name;           // Name of the file.
   off_t Size;                 // File size in bytes.
   time_t ModTime;             // Modification time of file.
   const DirectoryEntry *Dir;  // Directory file lives in.
@@ -81,7 +81,8 @@ class FileEntry {
 
 public:
   FileEntry()
-      : UniqueID(0, 0), IsNamedPipe(false), InPCH(false), IsValid(false)
+      : Name(0), UniqueID(0, 0), IsNamedPipe(false), InPCH(false),
+        IsValid(false)
   {}
 
   // FIXME: this is here to allow putting FileEntry in std::map.  Once we have
@@ -91,7 +92,7 @@ public:
     assert(!isValid() && "Cannot copy an initialized FileEntry");
   }
 
-  const char *getName() const { return Name.c_str(); }
+  const char *getName() const { return Name; }
   bool isValid() const { return IsValid; }
   off_t getSize() const { return Size; }
   unsigned getUID() const { return UID; }
index 7ed0acc7a8c20abe7f8cb5a1ae37484c3581c92a..913e41e4ca8be33941eefb920d9e7ded916c4e72 100644 (file)
@@ -29,9 +29,7 @@ class File;
 class FileSystem;
 }
 
-// FIXME: should probably replace this with vfs::Status
 struct FileData {
-  std::string Name;
   uint64_t Size;
   time_t ModTime;
   llvm::sys::fs::UniqueID UniqueID;
index 8f144da917f0ed8de61104685637da24e27f6c28..bd568120b25bce64f128bede8fcaa7fc2687ce8b 100644 (file)
@@ -90,8 +90,6 @@ public:
                                      bool RequiresNullTerminator = true) = 0;
   /// \brief Closes the file.
   virtual llvm::error_code close() = 0;
-  /// \brief Sets the name to use for this file.
-  virtual void setName(StringRef Name) = 0;
 };
 
 /// \brief The virtual file system interface.
index 5784f31843f30ae703e3ebe8f367bcb383acacf5..f7e566b977981df1b5c6ebba067451145d60a4f6 100644 (file)
@@ -282,7 +282,7 @@ const FileEntry *FileManager::getFile(StringRef Filename, bool openFile,
   }
 
   // Otherwise, we don't have this file yet, add it.
-  UFE.Name    = Data.Name;
+  UFE.Name    = InterndFileName;
   UFE.Size = Data.Size;
   UFE.ModTime = Data.ModTime;
   UFE.Dir     = DirInfo;
index e50dc1b5ed0300ec49538b72077f27f3ce21a18a..b225facbad9592269a7e983a1ae48bb4983b9985 100644 (file)
@@ -32,7 +32,6 @@ void FileSystemStatCache::anchor() { }
 
 static void copyStatusToFileData(const vfs::Status &Status,
                                  FileData &Data) {
-  Data.Name = Status.getName();
   Data.Size = Status.getSize();
   Data.ModTime = Status.getLastModificationTime().toEpochTime();
   Data.UniqueID = Status.getUniqueID();
index d4845e6f363b746b80a4d70c341400a69c964f4d..f6d88c1860d10263f39a3845a24ce1caecf32073 100644 (file)
@@ -83,7 +83,6 @@ error_code FileSystem::getBufferForFile(const llvm::Twine &Name,
 /// \brief Wrapper around a raw file descriptor.
 class RealFile : public File {
   int FD;
-  Status S;
   friend class RealFileSystem;
   RealFile(int FD) : FD(FD) {
     assert(FD >= 0 && "Invalid or inactive file descriptor");
@@ -96,21 +95,15 @@ public:
                        int64_t FileSize = -1,
                        bool RequiresNullTerminator = true) LLVM_OVERRIDE;
   error_code close() LLVM_OVERRIDE;
-  void setName(StringRef Name) LLVM_OVERRIDE;
 };
 RealFile::~RealFile() { close(); }
 
 ErrorOr<Status> RealFile::status() {
   assert(FD != -1 && "cannot stat closed file");
-  if (!S.isStatusKnown()) {
-    file_status RealStatus;
-    if (error_code EC = sys::fs::status(FD, RealStatus))
-      return EC;
-    Status NewS(RealStatus);
-    NewS.setName(S.getName());
-    S = llvm_move(NewS);
-  }
-  return S;
+  file_status RealStatus;
+  if (error_code EC = sys::fs::status(FD, RealStatus))
+    return EC;
+  return Status(RealStatus);
 }
 
 error_code RealFile::getBuffer(const Twine &Name,
@@ -138,10 +131,6 @@ error_code RealFile::close() {
   return error_code::success();
 }
 
-void RealFile::setName(StringRef Name) {
-  S.setName(Name);
-}
-
 /// \brief The file system according to your operating system.
 class RealFileSystem : public FileSystem {
 public:
@@ -165,7 +154,6 @@ error_code RealFileSystem::openFileForRead(const Twine &Name,
   if (error_code EC = sys::fs::openFileForRead(Name, FD))
     return EC;
   Result.reset(new RealFile(FD));
-  Result->setName(Name.str());
   return error_code::success();
 }
 
@@ -279,10 +267,7 @@ public:
         UseName(UseName) {}
   StringRef getExternalContentsPath() const { return ExternalContentsPath; }
   /// \brief whether to use the external path as the name for this file.
-  bool useExternalName(bool GlobalUseExternalName) const {
-    return UseName == NK_NotSet ? GlobalUseExternalName
-                                : (UseName == NK_External);
-  }
+  NameKind useName() const { return UseName; }
   static bool classof(const Entry *E) { return E->getKind() == EK_File; }
 };
 
@@ -785,7 +770,8 @@ ErrorOr<Status> VFSFromYAML::status(const Twine &Path) {
   if (FileEntry *F = dyn_cast<FileEntry>(*Result)) {
     ErrorOr<Status> S = ExternalFS->status(F->getExternalContentsPath());
     assert(!S || S->getName() == F->getExternalContentsPath());
-    if (S && !F->useExternalName(UseExternalNames))
+    if (S && (F->useName() == FileEntry::NK_Virtual ||
+              (F->useName() == FileEntry::NK_NotSet && !UseExternalNames)))
       S->setName(PathStr);
     return S;
   } else { // directory
@@ -806,14 +792,7 @@ error_code VFSFromYAML::openFileForRead(const Twine &Path,
   if (!F) // FIXME: errc::not_a_file?
     return error_code(errc::invalid_argument, system_category());
 
-  if (error_code EC = ExternalFS->openFileForRead(F->getExternalContentsPath(),
-                                                  Result))
-    return EC;
-
-  if (!F->useExternalName(UseExternalNames))
-    Result->setName(Path.str());
-
-  return error_code::success();
+  return ExternalFS->openFileForRead(F->getExternalContentsPath(), Result);
 }
 
 IntrusiveRefCntPtr<FileSystem>
index dd8363df9cafe03359ef21516a3a7096dd4d7a69..cdc5d7e338165bffcb3ad10b189ca784f8a9e682 100644 (file)
@@ -688,7 +688,6 @@ public:
     if (!D.HasData)
       return CacheMissing;
 
-    Data.Name = Path;
     Data.Size = D.Size;
     Data.ModTime = D.ModTime;
     Data.UniqueID = D.UniqueID;
diff --git a/test/VFS/Inputs/external-names.h b/test/VFS/Inputs/external-names.h
deleted file mode 100644 (file)
index 8b0baa3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-void foo(char **c) {
-  *c = __FILE__;
-  int x = c; // produce a diagnostic
-}
diff --git a/test/VFS/Inputs/use-external-names.yaml b/test/VFS/Inputs/use-external-names.yaml
deleted file mode 100644 (file)
index b9ea634..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  'version': 0,
-  'use-external-names': EXTERNAL_NAMES,
-  'roots': [{ 'type': 'file', 'name': 'OUT_DIR/external-names.h',
-             'external-contents': 'INPUT_DIR/external-names.h'
-           }]
-}
diff --git a/test/VFS/external-names.c b/test/VFS/external-names.c
deleted file mode 100644 (file)
index aa0bd67..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-// RUN: sed -e "s:INPUT_DIR:%S/Inputs:g" -e "s:OUT_DIR:%t:g" -e "s:EXTERNAL_NAMES:true:" %S/Inputs/use-external-names.yaml > %t.external.yaml
-// RUN: sed -e "s:INPUT_DIR:%S/Inputs:g" -e "s:OUT_DIR:%t:g" -e "s:EXTERNAL_NAMES:false:" %S/Inputs/use-external-names.yaml > %t.yaml
-// REQUIRES: shell
-
-#include "external-names.h"
-
-////
-// Preprocessor (__FILE__ macro and # directives):
-
-// RUN: %clang_cc1 -I %t -ivfsoverlay %t.external.yaml -E %s | FileCheck -check-prefix=CHECK-PP-EXTERNAL %s
-// CHECK-PP-EXTERNAL: # {{[0-9]*}} "[[NAME:.*Inputs.external-names.h]]"
-// CHECK-PP-EXTERNAL-NEXT: void foo(char **c) {
-// CHECK-PP-EXTERNAL-NEXT: *c = "[[NAME]]";
-
-// RUN: %clang_cc1 -I %t -ivfsoverlay %t.yaml -E %s | FileCheck -check-prefix=CHECK-PP %s
-// CHECK-PP-NOT: Inputs
-
-////
-// Diagnostics:
-
-// RUN: %clang_cc1 -I %t -ivfsoverlay %t.external.yaml -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-DIAG-EXTERNAL %s
-// CHECK-DIAG-EXTERNAL: {{.*}}Inputs{{.}}external-names.h:{{[0-9]*:[0-9]*}}: warning: incompatible pointer
-
-// RUN: %clang_cc1 -I %t -ivfsoverlay %t.yaml -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-DIAG %s
-// CHECK-DIAG-NOT: Inputs
-
-////
-// Debug info
-
-// RUN: %clang_cc1 -I %t -ivfsoverlay %t.external.yaml -triple %itanium_abi_triple -g -emit-llvm %s -o - | FileCheck -check-prefix=CHECK-DEBUG-EXTERNAL %s
-// CHECK-DEBUG-EXTERNAL: ![[Num:[0-9]*]] = metadata !{metadata !"{{.*}}Inputs{{.}}external-names.h
-// CHECK-DEBUG-EXTERNAL: metadata !{i32 {{[0-9]*}}, metadata ![[Num]]{{.*}}DW_TAG_file_type
-
-// RUN: %clang_cc1 -I %t -ivfsoverlay %t.yaml -triple %itanium_abi_triple -g -emit-llvm %s -o - | FileCheck -check-prefix=CHECK-DEBUG %s
-// CHECK-DEBUG-NOT: Inputs
index 113c7fee4c8f660d19c523a0504ee2cebd367fe7..5b35e687350f87d5aa90e7cc022cb5ab42969d6e 100644 (file)
@@ -30,7 +30,6 @@ private:
     FileData Data;
     memset(&Data, 0, sizeof(FileData));
     llvm::sys::fs::UniqueID ID(1, INode);
-    Data.Name = Path;
     Data.UniqueID = ID;
     Data.IsDirectory = !IsFile;
     StatCalls[Path] = Data;