diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h
index 79eba4f..0299d22 100644
--- a/include/clang/Basic/SourceManager.h
+++ b/include/clang/Basic/SourceManager.h
@@ -1017,15 +1017,15 @@
   /// of FileID) to \arg relativeOffset.
   bool isInFileID(SourceLocation Loc, FileID FID,
                   unsigned *RelativeOffset = 0) const {
-    return isInFileID(Loc, FID, 0, getFileIDSize(FID), RelativeOffset);
-  }
+    unsigned Offs = Loc.getOffset();
+    if (isOffsetInFileID(FID, Offs)) {
+      if (RelativeOffset)
+        *RelativeOffset = Offs - getSLocEntry(FID).getOffset();
+      return true;
+    }
 
-  /// \brief Given a specific chunk of a FileID (FileID with offset+length),
-  /// returns true if \arg Loc is inside that chunk and sets relative offset
-  /// (offset of \arg Loc from beginning of chunk) to \arg relativeOffset.
-  bool isInFileID(SourceLocation Loc,
-                  FileID FID, unsigned offset, unsigned length,
-                  unsigned *relativeOffset = 0) const;
+    return false;
+  }
 
   //===--------------------------------------------------------------------===//
   // Line Table Manipulation Routines
diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp
index 66ae486..6448147 100644
--- a/lib/Basic/SourceManager.cpp
+++ b/lib/Basic/SourceManager.cpp
@@ -1300,30 +1300,6 @@
   return NextOffset - Entry.getOffset() - 1;
 }
 
-bool SourceManager::isInFileID(SourceLocation Loc,
-                               FileID FID, unsigned offset, unsigned length,
-                               unsigned *relativeOffset) const {
-  assert(!FID.isInvalid());
-  if (Loc.isInvalid())
-    return false;
-
-  unsigned FIDOffs = getSLocEntry(FID).getOffset();
-  unsigned start = FIDOffs + offset;
-  unsigned end = start + length;
-
-  // Make sure offset/length describe a chunk inside the given FileID.
-  assert(start <  FIDOffs + getFileIDSize(FID));
-  assert(end   <= FIDOffs + getFileIDSize(FID));
-
-  if (Loc.getOffset() >= start && Loc.getOffset() < end) {
-    if (relativeOffset)
-      *relativeOffset = Loc.getOffset() - start;
-    return true;
-  }
-
-  return false;
-}
-
 //===----------------------------------------------------------------------===//
 // Other miscellaneous methods.
 //===----------------------------------------------------------------------===//
