diff --git a/lib/Basic/SourceLocation.cpp b/lib/Basic/SourceLocation.cpp
index 12a4962..5236bfa 100644
--- a/lib/Basic/SourceLocation.cpp
+++ b/lib/Basic/SourceLocation.cpp
@@ -16,7 +16,6 @@
 #include "clang/Basic/SourceManager.h"
 #include "llvm/Bitcode/Serialize.h"
 #include "llvm/Bitcode/Deserialize.h"
-
 using namespace clang;
 
 void SourceLocation::Emit(llvm::Serializer& S) const {
@@ -38,14 +37,19 @@
   return SourceRange(A,B);
 }
 
-FullSourceLoc FullSourceLoc::getLogicalLoc() {
+FullSourceLoc FullSourceLoc::getLogicalLoc() const {
   assert (isValid());
-  return FullSourceLoc(SrcMgr->getLogicalLoc(Loc),*SrcMgr);
+  return FullSourceLoc(SrcMgr->getLogicalLoc(Loc), *SrcMgr);
 }
 
-FullSourceLoc FullSourceLoc::getIncludeLoc() {
+FullSourceLoc FullSourceLoc::getPhysicalLoc() const {
   assert (isValid());
-  return FullSourceLoc(SrcMgr->getIncludeLoc(Loc),*SrcMgr);
+  return FullSourceLoc(SrcMgr->getPhysicalLoc(Loc), *SrcMgr);
+}
+
+FullSourceLoc FullSourceLoc::getIncludeLoc() const {
+  assert (isValid());
+  return FullSourceLoc(SrcMgr->getIncludeLoc(Loc), *SrcMgr);
 }
 
 unsigned FullSourceLoc::getLineNumber() const {
@@ -69,6 +73,16 @@
   return SrcMgr->getLogicalColumnNumber(Loc);
 }
 
+unsigned FullSourceLoc::getPhysicalLineNumber() const {
+  assert (isValid());
+  return SrcMgr->getPhysicalLineNumber(Loc);
+}
+
+unsigned FullSourceLoc::getPhysicalColumnNumber() const {
+  assert (isValid());
+  return SrcMgr->getPhysicalColumnNumber(Loc);
+}
+
 const char* FullSourceLoc::getSourceName() const {
   assert (isValid());
   return SrcMgr->getSourceName(Loc);
@@ -98,3 +112,23 @@
 unsigned FullSourceLoc::getCanonicalFileID() const {
   return SrcMgr->getCanonicalFileID(Loc);
 }
+
+void FullSourceLoc::dump() const {
+  if (!isValid()) {
+    fprintf(stderr, "Invalid Loc\n");
+    return;
+  }
+  
+  if (isFileID()) {
+    // The logical and physical pos is identical for file locs.
+    fprintf(stderr, "File Loc from '%s': %d: %d\n",
+            getSourceName(), getLogicalLineNumber(),
+            getLogicalColumnNumber());
+  } else {
+    fprintf(stderr, "Macro Loc (\n  Physical: ");
+    getPhysicalLoc().dump();
+    fprintf(stderr, "  Logical: ");
+    getLogicalLoc().dump();
+    fprintf(stderr, ")\n");
+  }
+}
