Use llvm::sys::fs::UniqueID for windows and unix.

This unifies the unix and windows versions of FileManager::UniqueDirContainer
and FileManager::UniqueFileContainer by using UniqueID.

We cannot just replace "struct stat" with llvm::sys::fs::file_status, since we
want to be able to construct fake ones, and file_status has different members
on unix and windows.

What the patch does is:

* Record only the information that clang is actually using.
* Use llvm::sys::fs::status instead of stat and fstat.
* Use llvm::sys::fs::UniqueID
* Delete the old windows versions of UniqueDirContainer and
UniqueFileContainer since the "unix" one now works on windows too.

llvm-svn: 187619
diff --git a/clang/unittests/Basic/FileManagerTest.cpp b/clang/unittests/Basic/FileManagerTest.cpp
index d86c96f..f8ce50d 100644
--- a/clang/unittests/Basic/FileManagerTest.cpp
+++ b/clang/unittests/Basic/FileManagerTest.cpp
@@ -24,18 +24,15 @@
 private:
   // Maps a file/directory path to its desired stat result.  Anything
   // not in this map is considered to not exist in the file system.
-  llvm::StringMap<struct stat, llvm::BumpPtrAllocator> StatCalls;
+  llvm::StringMap<FileData, llvm::BumpPtrAllocator> StatCalls;
 
   void InjectFileOrDirectory(const char *Path, ino_t INode, bool IsFile) {
-    struct stat statBuf;
-    memset(&statBuf, 0, sizeof(statBuf));
-    statBuf.st_dev = 1;
-#ifndef _WIN32  // struct stat has no st_ino field on Windows.
-    statBuf.st_ino = INode;
-#endif
-    statBuf.st_mode = IsFile ? (0777 | S_IFREG)  // a regular file
-        : (0777 | S_IFDIR);  // a directory
-    StatCalls[Path] = statBuf;
+    FileData Data;
+    memset(&Data, 0, sizeof(FileData));
+    llvm::sys::fs::UniqueID ID(1, INode);
+    Data.UniqueID = ID;
+    Data.IsDirectory = !IsFile;
+    StatCalls[Path] = Data;
   }
 
 public:
@@ -50,10 +47,10 @@
   }
 
   // Implement FileSystemStatCache::getStat().
-  virtual LookupResult getStat(const char *Path, struct stat &StatBuf,
-                               bool isFile, int *FileDescriptor) {
+  virtual LookupResult getStat(const char *Path, FileData &Data, bool isFile,
+                               int *FileDescriptor) {
     if (StatCalls.count(Path) != 0) {
-      StatBuf = StatCalls[Path];
+      Data = StatCalls[Path];
       return CacheExists;
     }