[clang] [Clang] [Diagnostics] Simplify filenames that contain '..' (PR #143520)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 10 11:50:59 PDT 2025
================
@@ -738,12 +738,20 @@ void TextDiagnostic::printDiagnosticMessage(raw_ostream &OS,
}
void TextDiagnostic::emitFilename(StringRef Filename, const SourceManager &SM) {
-#ifdef _WIN32
- SmallString<4096> TmpFilename;
-#endif
- if (DiagOpts.AbsolutePath) {
- auto File = SM.getFileManager().getOptionalFileRef(Filename);
- if (File) {
+ auto File = SM.getFileManager().getOptionalFileRef(Filename);
+
+ // Try to simplify paths that contain '..' in any case since paths to
+ // standard library headers especially tend to get quite long otherwise.
+ // Only do that for local filesystems though to avoid slowing down
+ // compilation too much.
+ auto AlwaysSimplify = [&] {
+ return File->getName().contains("..") &&
+ llvm::sys::fs::is_local(File->getName());
+ };
----------------
Sirraide wrote:
Hmm, on my system the difference was about 20ms (180ms vs 160ms), so I think there may be a performance difference, but it’s really not that bad. Also, this stress test is resolving 1000 different paths which is... hopefully a lot more than any user would ever see in a single compilation.
https://github.com/llvm/llvm-project/pull/143520
More information about the cfe-commits
mailing list