Add FullSourceLoc::getDecomposedLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66522 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/Basic/SourceLocation.h b/include/clang/Basic/SourceLocation.h
index b5906e1..ba0bb6f 100644
--- a/include/clang/Basic/SourceLocation.h
+++ b/include/clang/Basic/SourceLocation.h
@@ -216,6 +216,11 @@
   /// data for the specified FileID.
   std::pair<const char*, const char*> getBufferData() const;
   
+  /// getDecomposedLoc - Decompose the specified location into a raw FileID +
+  /// Offset pair.  The first element is the FileID, the second is the
+  /// offset from the start of the buffer of the location.
+  std::pair<FileID, unsigned> getDecomposedLoc() const;
+
   bool isInSystemHeader() const;
   
   /// Prints information about this FullSourceLoc to stderr. Useful for
diff --git a/lib/Basic/SourceLocation.cpp b/lib/Basic/SourceLocation.cpp
index fd90b5a..dc1dceb 100644
--- a/lib/Basic/SourceLocation.cpp
+++ b/lib/Basic/SourceLocation.cpp
@@ -142,3 +142,7 @@
   const llvm::MemoryBuffer *Buf = getBuffer();
   return std::make_pair(Buf->getBufferStart(), Buf->getBufferEnd());
 }
+
+std::pair<FileID, unsigned> FullSourceLoc::getDecomposedLoc() const {
+  return SrcMgr->getDecomposedLoc(*this);
+}