forked from OSchip/llvm-project
Always cache resolved paths as it even saves on StringMap lookups.
Now that the resolved path cache stores the StringRef's, its best to just always cache the results, even when realpath isn't used. This way we'll still avoid the StringMap hashing and lookup. This also conveniently reorganises this code in a way I need for a future patch. llvm-svn: 263777
This commit is contained in:
parent
631ed04af0
commit
64d075ec07
|
@ -1640,22 +1640,20 @@ PointerIntPair<DeclContext *, 1> DeclContextTree::getChildDeclContext(
|
|||
File)) {
|
||||
Line = DIE->getAttributeValueAsUnsignedConstant(
|
||||
&U.getOrigUnit(), dwarf::DW_AT_decl_line, 0);
|
||||
#ifdef HAVE_REALPATH
|
||||
// Cache the resolved paths, because calling realpath is expansive.
|
||||
StringRef ResolvedPath = U.getResolvedPath(FileNum);
|
||||
if (!ResolvedPath.empty()) {
|
||||
FileRef = ResolvedPath;
|
||||
} else {
|
||||
#ifdef HAVE_REALPATH
|
||||
char RealPath[PATH_MAX + 1];
|
||||
RealPath[PATH_MAX] = 0;
|
||||
if (::realpath(File.c_str(), RealPath))
|
||||
File = RealPath;
|
||||
#endif
|
||||
FileRef = StringPool.internString(File);
|
||||
U.setResolvedPath(FileNum, FileRef);
|
||||
}
|
||||
#else
|
||||
FileRef = StringPool.internString(File);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue