================
@@ -908,19 +908,23 @@ getExpansionLocSlowCase(SourceLocation Loc) const {
 
 SourceLocation SourceManager::getSpellingLocSlowCase(SourceLocation Loc) const 
{
   do {
-    FileIDAndOffset LocInfo = getDecomposedLoc(Loc);
-    Loc = getSLocEntry(LocInfo.first).getExpansion().getSpellingLoc();
-    Loc = Loc.getLocWithOffset(LocInfo.second);
+    const SLocEntry &Entry = getSLocEntry(getFileID(Loc));
+    Loc = Entry.getExpansion().getSpellingLoc().getLocWithOffset(
+        Loc.getOffset() - Entry.getOffset());
   } while (!Loc.isFileID());
   return Loc;
 }
 
 SourceLocation SourceManager::getFileLocSlowCase(SourceLocation Loc) const {
   do {
-    if (isMacroArgExpansion(Loc))
-      Loc = getImmediateSpellingLoc(Loc);
-    else
-      Loc = getImmediateExpansionRange(Loc).getBegin();
+    const SLocEntry &Entry = getSLocEntry(getFileID(Loc));
+    const ExpansionInfo &ExpInfo = Entry.getExpansion();
+    if (ExpInfo.isMacroArgExpansion()) {
+      Loc = ExpInfo.getSpellingLoc().getLocWithOffset(Loc.getOffset() -
+                                                      Entry.getOffset());
+    } else {
+      Loc = ExpInfo.getExpansionLocStart();
+    }
----------------
AaronBallman wrote:

> Can we run the performance test on this RP somehow? Although I doubt that 
> there will be any significant change.

Unfortunately, not trivially; you can contact Nikita to have your fork added 
(https://llvm-compile-time-tracker.com/about.php) but that may take a while 
given the upcoming dev conference and folks being busy with that. I think it'd 
be fine if there were some local tests on whatever project you have that's 
super macro heavy, something as simple as "average of 1234ms before this patch 
and 567ms after the patch on my machine" would perhaps help.

Basically, if there's a measurable performance improvement, we can hold our 
nose on slightly reduced readability, but if there's no measurable performance 
improvement, there's less of a case for taking the patch..

https://github.com/llvm/llvm-project/pull/164269
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to