arphaman added a comment.

In D79834#2034666 <https://reviews.llvm.org/D79834#2034666>, @jkorous wrote:

> IIUC the issue is that `SourceManager::translateFile()` basically consists of 
> two blocks of code:
>
>   // First, check the main file ID, since it is common to look for a
>   // location in the main file.
>   if (MainFileID.isValid()) {
>     bool Invalid = false;
>     const SLocEntry &MainSLoc = getSLocEntry(MainFileID, &Invalid);
>     if (Invalid)
>       return FileID();
>   
>     if (MainSLoc.isFile()) {
>       const ContentCache *MainContentCache =
>           MainSLoc.getFile().getContentCache();
>       if (MainContentCache && MainContentCache->OrigEntry == SourceFile)
>         return MainFileID;
>     }
>   }
>   
>
> and
>
>     // The location we're looking for isn't in the main file; look
>     // through all of the local source locations.
>   ...
>
>
> The comments suggest that the first block is a heuristic related to our case 
> and the second block I would assume being the expensive part. 
> `SourceManager::getFileEntryRefForID` implementation seems similar to the 
> first block.
>
> It makes sense to me to avoid the expensive search. I'm just wondering - how 
> much speedup do we get with caching the value?


Good question, let me check if caching can be avoided.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79834/new/

https://reviews.llvm.org/D79834



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to