Eliminate clang_getInstantiationLocationOffset(), and instead add an
offset parameter to clang_getInstantiationLocation(). 


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94573 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp
index 3a59779..10099ef 100644
--- a/tools/CIndex/CIndex.cpp
+++ b/tools/CIndex/CIndex.cpp
@@ -1123,11 +1123,27 @@
   return Result;
 }
 
-static SourceLocation getAdjustedSourceLocation(CXSourceLocation location) {
+void clang_getInstantiationLocation(CXSourceLocation location,
+                                    CXFile *file,
+                                    unsigned *line,
+                                    unsigned *column,
+                                    unsigned *offset) {
   cxloc::CXSourceLocationPtr Ptr
     = cxloc::CXSourceLocationPtr::getFromOpaqueValue(location.ptr_data);
   SourceLocation Loc = SourceLocation::getFromRawEncoding(location.int_data);
 
+  if (!Ptr.getPointer() || Loc.isInvalid()) {
+    if (file)
+      *file = 0;
+    if (line)
+      *line = 0;
+    if (column)
+      *column = 0;
+    if (offset)
+      *offset = 0;
+    return;
+  }
+
   // FIXME: This is largely copy-paste from
   ///TextDiagnosticPrinter::HighlightRange.  When it is clear that this is
   // what we want the two routines should be refactored.  
@@ -1159,53 +1175,14 @@
       InstLoc = InstLoc.getFileLocWithOffset(Length - 1);
   }
 
-  return InstLoc;
-}
-
-void clang_getInstantiationLocation(CXSourceLocation location,
-                                    CXFile *file,
-                                    unsigned *line,
-                                    unsigned *column) {
-  cxloc::CXSourceLocationPtr Ptr
-    = cxloc::CXSourceLocationPtr::getFromOpaqueValue(location.ptr_data);
-  SourceLocation Loc = SourceLocation::getFromRawEncoding(location.int_data);
-
-  if (!Ptr.getPointer() || Loc.isInvalid()) {
-    if (file)
-      *file = 0;
-    if (line)
-      *line = 0;
-    if (column)
-      *column = 0;
-    return;
-  }
-
-  SourceLocation InstLoc = getAdjustedSourceLocation(location);
-  ASTContext &Context = *Ptr.getPointer();
-  SourceManager &SM = Context.getSourceManager();
   if (file)
     *file = (void *)SM.getFileEntryForID(SM.getFileID(InstLoc));
   if (line)
     *line = SM.getInstantiationLineNumber(InstLoc);
   if (column)
     *column = SM.getInstantiationColumnNumber(InstLoc);
-}
-
-void clang_getInstantiationLocationOffset(CXSourceLocation location,
-                                          CXFile *file,
-                                          unsigned *offset) {
-  cxloc::CXSourceLocationPtr Ptr
-    = cxloc::CXSourceLocationPtr::getFromOpaqueValue(location.ptr_data);
-  SourceLocation Loc = SourceLocation::getFromRawEncoding(location.int_data);
-
-  ASTContext &Context = *Ptr.getPointer();
-  SourceManager &SM = Context.getSourceManager();
-  SourceLocation InstLoc = getAdjustedSourceLocation(location);
-  std::pair<FileID, unsigned> Decomposed = SM.getDecomposedLoc(InstLoc);
-  if (file)
-    *file = (void *)SM.getFileEntryForID(Decomposed.first);
   if (offset)
-    *offset = Decomposed.second;
+    *offset = SM.getDecomposedLoc(InstLoc).second;
 }
 
 CXSourceLocation clang_getRangeStart(CXSourceRange range) {