diff --git a/lib/Debugger/ProgramInfo.cpp b/lib/Debugger/ProgramInfo.cpp
index d811f60..833fe7c 100644
--- a/lib/Debugger/ProgramInfo.cpp
+++ b/lib/Debugger/ProgramInfo.cpp
@@ -195,7 +195,7 @@
 ProgramInfo::ProgramInfo(Module *m) : M(m), ProgramTimeStamp(0,0) {
   assert(M && "Cannot create program information with a null module!");
   const sys::FileStatus *Stat;
-  Stat = sys::Path(M->getModuleIdentifier()).getFileStatus();
+  Stat = sys::PathWithStatus(M->getModuleIdentifier()).getFileStatus();
   if (Stat)
     ProgramTimeStamp = Stat->getTimestamp();
 
diff --git a/lib/Support/FileUtilities.cpp b/lib/Support/FileUtilities.cpp
index 1ea5dda..1736b0d 100644
--- a/lib/Support/FileUtilities.cpp
+++ b/lib/Support/FileUtilities.cpp
@@ -148,8 +148,8 @@
 /// error occurs, allowing the caller to distinguish between a failed diff and a
 /// file system error.
 ///
-int llvm::DiffFilesWithTolerance(const sys::Path &FileA,
-                                 const sys::Path &FileB,
+int llvm::DiffFilesWithTolerance(const sys::PathWithStatus &FileA,
+                                 const sys::PathWithStatus &FileB,
                                  double AbsTol, double RelTol,
                                  std::string *Error) {
   const sys::FileStatus *FileAStat = FileA.getFileStatus(false, Error);
diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp
index 649eb7a..fc40f78 100644
--- a/tools/llvm-ar/llvm-ar.cpp
+++ b/tools/llvm-ar/llvm-ar.cpp
@@ -281,7 +281,8 @@
     for (std::set<sys::Path>::iterator I = content.begin(), E = content.end();
          I != E; ++I) {
       // Make sure it exists and is a directory
-      const sys::FileStatus *Status = I->getFileStatus(false, ErrMsg);
+      const sys::FileStatus *Status =
+        sys::PathWithStatus(*I).getFileStatus(false, ErrMsg);
       if (!Status)
         return true;
       if (Status->isDir) {
@@ -309,7 +310,8 @@
       if (!aPath.exists())
         throw std::string("File does not exist: ") + Members[i];
       std::string Err;
-      const sys::FileStatus *si = aPath.getFileStatus(false, &Err);
+      const sys::FileStatus *si = 
+        sys::PathWithStatus(aPath).getFileStatus(false, &Err);
       if (!si)
         throw Err;
       if (si->isDir) {
@@ -645,7 +647,8 @@
 
     if (found != remaining.end()) {
       std::string Err;
-      const sys::FileStatus *si = found->getFileStatus(false, &Err);
+      const sys::FileStatus *si = 
+        sys::PathWithStatus(*found).getFileStatus(false, &Err);
       if (!si)
         return true;
       if (si->isDir) {
diff --git a/tools/llvm-db/Commands.cpp b/tools/llvm-db/Commands.cpp
index 5a8aa2f..487d5ec 100644
--- a/tools/llvm-db/Commands.cpp
+++ b/tools/llvm-db/Commands.cpp
@@ -51,7 +51,8 @@
   // If the program has been modified, reload it!
   sys::Path Program(Dbg.getProgramPath());
   std::string Err;
-  const sys::FileStatus *Status = Program.getFileStatus(false, &Err);
+  const sys::FileStatus *Status = 
+    sys::PathWithStatus(Program).getFileStatus(false, &Err);
   if (!Status)
     throw Err;
   if (TheProgramInfo->getProgramTimeStamp() != Status->getTimestamp()) {
diff --git a/tools/llvmc/CompilerDriver.cpp b/tools/llvmc/CompilerDriver.cpp
index 3d91ad9..4092eda 100644
--- a/tools/llvmc/CompilerDriver.cpp
+++ b/tools/llvmc/CompilerDriver.cpp
@@ -195,7 +195,8 @@
 
   void cleanup() {
     if (!isSet(KEEP_TEMPS_FLAG)) {
-      const sys::FileStatus *Status = TempDir.getFileStatus();
+      const sys::FileStatus *Status = 
+        sys::PathWithStatus(TempDir).getFileStatus();
       if (Status && Status->isDir)
         TempDir.eraseFromDisk(/*remove_contents=*/true);
     } else {
