diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp
index fc40f78..7f6afc6 100644
--- a/tools/llvm-ar/llvm-ar.cpp
+++ b/tools/llvm-ar/llvm-ar.cpp
@@ -281,8 +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 =
-        sys::PathWithStatus(*I).getFileStatus(false, ErrMsg);
+      sys::PathWithStatus PwS(*I);
+      const sys::FileStatus *Status = PwS.getFileStatus(false, ErrMsg);
       if (!Status)
         return true;
       if (Status->isDir) {
@@ -310,8 +310,8 @@
       if (!aPath.exists())
         throw std::string("File does not exist: ") + Members[i];
       std::string Err;
-      const sys::FileStatus *si = 
-        sys::PathWithStatus(aPath).getFileStatus(false, &Err);
+      sys::PathWithStatus PwS(aPath);
+      const sys::FileStatus *si = PwS.getFileStatus(false, &Err);
       if (!si)
         throw Err;
       if (si->isDir) {
@@ -647,8 +647,8 @@
 
     if (found != remaining.end()) {
       std::string Err;
-      const sys::FileStatus *si = 
-        sys::PathWithStatus(*found).getFileStatus(false, &Err);
+      sys::PathWithStatus PwS(*found); 
+      const sys::FileStatus *si = PwS.getFileStatus(false, &Err);
       if (!si)
         return true;
       if (si->isDir) {
