diff --git a/include/clang/Basic/SourceLocation.h b/include/clang/Basic/SourceLocation.h
index 319857e..22d5ff5 100644
--- a/include/clang/Basic/SourceLocation.h
+++ b/include/clang/Basic/SourceLocation.h
@@ -258,8 +258,6 @@
 
   bool isInSystemHeader() const;
   
-  unsigned getCanonicalFileID() const;
-  
   bool operator==(const FullSourceLoc& RHS) const {
     return SrcMgr == RHS.SrcMgr && Loc == RHS.Loc;
   }
diff --git a/lib/Basic/SourceLocation.cpp b/lib/Basic/SourceLocation.cpp
index 41ada63..c68cb8b 100644
--- a/lib/Basic/SourceLocation.cpp
+++ b/lib/Basic/SourceLocation.cpp
@@ -98,9 +98,8 @@
   return SrcMgr->isInSystemHeader(Loc);
 }
 
-
-const char * FullSourceLoc::getCharacterData() const {
-  assert (isValid());
+const char *FullSourceLoc::getCharacterData() const {
+  assert(isValid());
   return SrcMgr->getCharacterData(Loc);
 }
 
@@ -109,10 +108,6 @@
   return SrcMgr->getBuffer(Loc.getFileID());
 }
 
-unsigned FullSourceLoc::getCanonicalFileID() const {
-  return SrcMgr->getCanonicalFileID(Loc);
-}
-
 void FullSourceLoc::dump() const {
   if (!isValid()) {
     fprintf(stderr, "Invalid Loc\n");
diff --git a/lib/Driver/HTMLDiagnostics.cpp b/lib/Driver/HTMLDiagnostics.cpp
index 4128816..7f20e1a 100644
--- a/lib/Driver/HTMLDiagnostics.cpp
+++ b/lib/Driver/HTMLDiagnostics.cpp
@@ -124,8 +124,7 @@
   if (noDir)
     return;
   
-  SourceManager& SMgr = D.begin()->getLocation().getManager();
-
+  SourceManager &SMgr = D.begin()->getLocation().getManager();
   unsigned FileID = 0;
   bool FileIDInitialized = false;
   
@@ -134,10 +133,9 @@
     FullSourceLoc L = I->getLocation().getInstantiationLoc();
     
     if (!FileIDInitialized) {
-      FileID = L.getCanonicalFileID();
+      FileID = SMgr.getCanonicalFileID(L.getLocation());
       FileIDInitialized = true;
-    }
-    else if (L.getCanonicalFileID() != FileID)
+    } else if (SMgr.getCanonicalFileID(L.getLocation()) != FileID)
       return; // FIXME: Emit a warning?
     
     // Check the source ranges.
@@ -345,7 +343,7 @@
 
   assert (&LPos.getManager() == &SM && "SourceManagers are different!");
   
-  if (LPos.getCanonicalFileID() != BugFileID)
+  if (SM.getCanonicalFileID(LPos.getLocation()) != BugFileID)
     return;
   
   const llvm::MemoryBuffer *Buf = SM.getBuffer(FileID);
