Index: lib/Basic/FileManager.cpp
===================================================================
--- lib/Basic/FileManager.cpp	(revision 91610)
+++ lib/Basic/FileManager.cpp	(working copy)
@@ -219,6 +219,11 @@
 ///
 const DirectoryEntry *FileManager::getDirectory(const char *NameStart,
                                                 const char *NameEnd) {
+  // stat doesn't like trailing separators (at least on Windows).
+  if (((NameEnd - NameStart) > 1) &&
+      ((*(NameEnd - 1) == '/') || (*(NameEnd - 1) == '\\')))
+    NameEnd--;
+
   ++NumDirLookups;
   llvm::StringMapEntry<DirectoryEntry *> &NamedDirEnt =
     DirEntries.GetOrCreateValue(NameStart, NameEnd);
