================ @@ -1370,19 +1370,47 @@ ToolChain::CXXStdlibType ToolChain::GetCXXStdlibType(const ArgList &Args) const{ return *cxxStdlibType; } +static void ResolveAndAddSystemIncludePath(const ArgList &DriverArgs, + ArgStringList &CC1Args, + const Twine &Path) { + bool Canonicalize = + DriverArgs.hasFlag(options::OPT_canonical_prefixes, + options::OPT_no_canonical_prefixes, true); + + if (!Canonicalize) { + CC1Args.push_back(DriverArgs.MakeArgString(Path)); + return; + } + + // We canonicalise system include paths that were added automatically if + // that yields a shorter path since those can end up quite long otherwise. + // + // While we would ideally prefer to use FileManager for this, there doesn't + // seem to be a way to obtain one in here, so we just resolve these via the + // real file system; most system libraries will hopefully correspond to + // actual files. + IntrusiveRefCntPtr<vfs::FileSystem> VFS = vfs::getRealFileSystem(); + SmallString<256> Canonical, PathStorage; + StringRef SimplifiedPath = Path.toStringRef(PathStorage); + if (!VFS->getRealPath(SimplifiedPath, Canonical) && + Canonical.size() < SimplifiedPath.size()) ---------------- Sirraide wrote:
Right, I guess we can just remove that now—that was more important when we were canonicalising *all* paths so we wouldn’t print the canonical path for files that the user specified (e.g. we wouldn’t want to print `/home/user/some_project/src/foo.cc` instead of just `foo.cc`), but I don’t think that’s really all that relevant anymore now for the kinds of paths that this is dealing w/; I’ll remove the check. https://github.com/llvm/llvm-project/pull/148745 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits