]> granicus.if.org Git - clang/commitdiff
Simplify logic to use SourceManager::getFileLoc(), per Argyrios's feedback.
authorTed Kremenek <kremenek@apple.com>
Wed, 19 Dec 2012 01:16:49 +0000 (01:16 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 19 Dec 2012 01:16:49 +0000 (01:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170487 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Frontend/DiagnosticRenderer.cpp
tools/libclang/CXSourceLocation.cpp

index 88a8706731cd5221bbb5472df05892da37d240f0..d540964b6432455186533f27fe587a285aa9128a 100644 (file)
@@ -153,10 +153,8 @@ void DiagnosticRenderer::emitDiagnostic(SourceLocation Loc,
 
     SourceLocation UnexpandedLoc = Loc;
 
-    // Perform the same walk as emitMacroExpansions, to find the ultimate
-    // expansion location for the diagnostic.
-    while (Loc.isMacroID())
-      Loc = SM->getImmediateMacroCallerLoc(Loc);
+    // Find the ultimate expansion location for the diagnostic.
+    Loc = SM->getFileLoc(Loc);
 
     PresumedLoc PLoc = SM->getPresumedLoc(Loc, DiagOpts->ShowPresumedLoc);
 
index c715eecdecfd0628dec72b2fb80fd67e2ed0bd08..5d49f42a4a57f5f0d6d731deb04303905220f3c6 100644 (file)
@@ -294,14 +294,7 @@ void clang_getSpellingLocation(CXSourceLocation location,
   
   const SourceManager &SM =
   *static_cast<const SourceManager*>(location.ptr_data[0]);
-  SourceLocation SpellLoc = Loc;
-
-  // Unravel the macro instantiation stack.  This logic mirrors that
-  // in DiagnosticRenderer.
-  while (SpellLoc.isMacroID()) {
-    SpellLoc = SM.getImmediateMacroCallerLoc(SpellLoc);
-  }
-
+  SourceLocation SpellLoc = SM.getFileLoc(Loc);
   std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(SpellLoc);
   FileID FID = LocInfo.first;
   unsigned FileOffset = LocInfo.second;