Author: Fangrui Song Date: 2024-03-03T18:10:46-08:00 New Revision: 2b5cd8be3af43e5aa5b76b6aeb1edd3141b803ca
URL: https://github.com/llvm/llvm-project/commit/2b5cd8be3af43e5aa5b76b6aeb1edd3141b803ca DIFF: https://github.com/llvm/llvm-project/commit/2b5cd8be3af43e5aa5b76b6aeb1edd3141b803ca.diff LOG: [Driver] Remove InstallDir and getInstalledDir. NFC Follow-up to #80527. Added: Modified: clang/include/clang/Driver/Driver.h clang/lib/Driver/Driver.cpp clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/AMDGPU.cpp clang/lib/Driver/ToolChains/BareMetal.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/DragonFly.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Hexagon.cpp clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/MSVC.cpp clang/lib/Driver/ToolChains/MinGW.cpp clang/lib/Driver/ToolChains/MipsLinux.cpp clang/lib/Driver/ToolChains/OHOS.cpp clang/lib/Driver/ToolChains/WebAssembly.cpp clang/lib/Driver/ToolChains/ZOS.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Driver/Driver.h b/clang/include/clang/Driver/Driver.h index f145ddc05bd9d6..bcf8c1295f2ddf 100644 --- a/clang/include/clang/Driver/Driver.h +++ b/clang/include/clang/Driver/Driver.h @@ -160,9 +160,6 @@ class Driver { /// Target and driver mode components extracted from clang executable name. ParsedClangName ClangNameParts; - /// TODO: Remove this in favor of Dir. - std::string InstalledDir; - /// The path to the compiler resource directory. std::string ResourceDir; @@ -429,8 +426,6 @@ class Driver { /// Get the path to where the clang executable was installed. const char *getInstalledDir() const { - if (!InstalledDir.empty()) - return InstalledDir.c_str(); return Dir.c_str(); } diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index d7fbb127fed2dd..b8ec0791dc51f7 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -209,11 +209,10 @@ Driver::Driver(StringRef ClangExecutable, StringRef TargetTriple, Name = std::string(llvm::sys::path::filename(ClangExecutable)); Dir = std::string(llvm::sys::path::parent_path(ClangExecutable)); - InstalledDir = Dir; // Provide a sensible default installed dir. if ((!SysRoot.empty()) && llvm::sys::path::is_relative(SysRoot)) { // Prepend InstalledDir if SysRoot is relative - SmallString<128> P(InstalledDir); + SmallString<128> P(Dir); llvm::sys::path::append(P, SysRoot); SysRoot = std::string(P); } @@ -1337,7 +1336,7 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) { if (const Arg *A = Args.getLastArg(options::OPT_target)) TargetTriple = A->getValue(); if (const Arg *A = Args.getLastArg(options::OPT_ccc_install_dir)) - Dir = InstalledDir = A->getValue(); + Dir = Dir = A->getValue(); for (const Arg *A : Args.filtered(options::OPT_B)) { A->claim(); PrefixDirs.push_back(A->getValue(0)); @@ -2000,7 +1999,7 @@ void Driver::PrintVersion(const Compilation &C, raw_ostream &OS) const { OS << '\n'; // Print out the install directory. - OS << "InstalledDir: " << InstalledDir << '\n'; + OS << "InstalledDir: " << Dir << '\n'; // If configuration files were used, print their paths. for (auto ConfigFile : ConfigFiles) diff --git a/clang/lib/Driver/ToolChains/AIX.cpp b/clang/lib/Driver/ToolChains/AIX.cpp index e6126ff62db3c9..3c7049a99982d0 100644 --- a/clang/lib/Driver/ToolChains/AIX.cpp +++ b/clang/lib/Driver/ToolChains/AIX.cpp @@ -342,9 +342,7 @@ void aix::Linker::ConstructJob(Compilation &C, const JobAction &JA, /// AIX - AIX tool chain which can call as(1) and ld(1) directly. AIX::AIX(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : ToolChain(D, Triple, Args) { - getProgramPaths().push_back(getDriver().getInstalledDir()); - if (getDriver().getInstalledDir() != getDriver().Dir) - getProgramPaths().push_back(getDriver().Dir); + getProgramPaths().push_back(getDriver().Dir); ParseInlineAsmUsingAsmParser = Args.hasFlag( options::OPT_fintegrated_as, options::OPT_fno_integrated_as, true); diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp index 6fcbcffd6f0d67..e122379e860e20 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -209,7 +209,7 @@ RocmInstallationDetector::getInstallationPathCandidates() { } // Try to find relative to the compiler binary. - const char *InstallDir = D.getInstalledDir(); + StringRef InstallDir = D.Dir; // Check both a normal Unix prefix position of the clang binary, as well as // the Windows-esque layout the ROCm packages use with the host architecture diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp index d5fc1d5dd25a8b..221c4815792405 100644 --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -100,9 +100,7 @@ static bool findRISCVMultilibs(const Driver &D, BareMetal::BareMetal(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : ToolChain(D, Triple, Args) { - getProgramPaths().push_back(getDriver().getInstalledDir()); - if (getDriver().getInstalledDir() != getDriver().Dir) - getProgramPaths().push_back(getDriver().Dir); + getProgramPaths().push_back(getDriver().Dir); findMultilibs(D, Triple, Args); SmallString<128> SysRoot(computeSysRoot()); diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 66c3a237c12117..858d20fbfac015 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -1109,7 +1109,7 @@ void Clang::AddPreprocessingOptions(Compilation &C, const JobAction &JA, if ((getToolChain().getTriple().isNVPTX() || getToolChain().getTriple().isAMDGCN()) && C.getActiveOffloadKinds() == Action::OFK_None) { - SmallString<128> P(llvm::sys::path::parent_path(D.InstalledDir)); + SmallString<128> P(llvm::sys::path::parent_path(D.Dir)); llvm::sys::path::append(P, "include"); llvm::sys::path::append(P, getToolChain().getTripleString()); CmdArgs.push_back("-internal-isystem"); diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index fff538d2e5d735..48b612ec40f61d 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -925,9 +925,7 @@ void darwin::VerifyDebug::ConstructJob(Compilation &C, const JobAction &JA, MachO::MachO(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : ToolChain(D, Triple, Args) { // We expect 'as', 'ld', etc. to be adjacent to our install dir. - getProgramPaths().push_back(getDriver().getInstalledDir()); - if (getDriver().getInstalledDir() != getDriver().Dir) - getProgramPaths().push_back(getDriver().Dir); + getProgramPaths().push_back(getDriver().Dir); } /// Darwin - Darwin tool chain for i386 and x86_64. @@ -2534,7 +2532,7 @@ void DarwinClang::AddClangCXXStdlibIncludeArgs( // Note that InstallBin can be relative, so we use '..' instead of // parent_path. llvm::SmallString<128> InstallBin = - llvm::StringRef(getDriver().getInstalledDir()); // <install>/bin + llvm::StringRef(getDriver().Dir); // <install>/bin llvm::sys::path::append(InstallBin, "..", "include", "c++", "v1"); if (getVFS().exists(InstallBin)) { addSystemInclude(DriverArgs, CC1Args, InstallBin); @@ -2545,7 +2543,7 @@ void DarwinClang::AddClangCXXStdlibIncludeArgs( } // (2) Check for the folder where the executable is located, if diff erent. - if (getDriver().getInstalledDir() != getDriver().Dir) { + if (getDriver().Dir != getDriver().Dir) { InstallBin = llvm::StringRef(getDriver().Dir); llvm::sys::path::append(InstallBin, "..", "include", "c++", "v1"); if (getVFS().exists(InstallBin)) { diff --git a/clang/lib/Driver/ToolChains/DragonFly.cpp b/clang/lib/Driver/ToolChains/DragonFly.cpp index 89e0600277c44c..b59a172bd6ae86 100644 --- a/clang/lib/Driver/ToolChains/DragonFly.cpp +++ b/clang/lib/Driver/ToolChains/DragonFly.cpp @@ -205,11 +205,8 @@ void dragonfly::Linker::ConstructJob(Compilation &C, const JobAction &JA, DragonFly::DragonFly(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : Generic_ELF(D, Triple, Args) { - // Path mangling to find libexec - getProgramPaths().push_back(getDriver().getInstalledDir()); - if (getDriver().getInstalledDir() != getDriver().Dir) - getProgramPaths().push_back(getDriver().Dir); + getProgramPaths().push_back(getDriver().Dir); getFilePaths().push_back(getDriver().Dir + "/../lib"); getFilePaths().push_back(concat(getDriver().SysRoot, "/usr/lib")); diff --git a/clang/lib/Driver/ToolChains/Fuchsia.cpp b/clang/lib/Driver/ToolChains/Fuchsia.cpp index 14b838500becce..9123ddf2fe991f 100644 --- a/clang/lib/Driver/ToolChains/Fuchsia.cpp +++ b/clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -251,9 +251,7 @@ void fuchsia::StaticLibTool::ConstructJob(Compilation &C, const JobAction &JA, Fuchsia::Fuchsia(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : ToolChain(D, Triple, Args) { - getProgramPaths().push_back(getDriver().getInstalledDir()); - if (getDriver().getInstalledDir() != D.Dir) - getProgramPaths().push_back(D.Dir); + getProgramPaths().push_back(getDriver().Dir); if (!D.SysRoot.empty()) { SmallString<128> P(D.SysRoot); diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index a2526a2b903964..a9c9d2475809d7 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -2285,7 +2285,7 @@ void Generic_GCC::GCCInstallationDetector::init( } // Then look for gcc installed alongside clang. - Prefixes.push_back(D.InstalledDir + "/.."); + Prefixes.push_back(D.Dir + "/.."); // Next, look for prefix(es) that correspond to distribution-supplied gcc // installations. @@ -3054,9 +3054,7 @@ Generic_GCC::Generic_GCC(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : ToolChain(D, Triple, Args), GCCInstallation(D), CudaInstallation(D, Triple, Args), RocmInstallation(D, Triple, Args) { - getProgramPaths().push_back(getDriver().getInstalledDir()); - if (getDriver().getInstalledDir() != getDriver().Dir) - getProgramPaths().push_back(getDriver().Dir); + getProgramPaths().push_back(getDriver().Dir); } Generic_GCC::~Generic_GCC() {} diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp index fa47c98901e145..12b3b99df7ca1e 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -411,7 +411,7 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA, const std::string MCpuSuffix = "/" + CpuVer.str(); const std::string MCpuG0Suffix = MCpuSuffix + "/G0"; const std::string RootDir = - HTC.getHexagonTargetDir(D.InstalledDir, D.PrefixDirs) + "/"; + HTC.getHexagonTargetDir(D.Dir, D.PrefixDirs) + "/"; const std::string StartSubDir = "hexagon/lib" + (UseG0 ? MCpuG0Suffix : MCpuSuffix); @@ -569,8 +569,7 @@ void HexagonToolChain::getHexagonLibraryPaths(const ArgList &Args, std::copy(D.PrefixDirs.begin(), D.PrefixDirs.end(), std::back_inserter(RootDirs)); - std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(), - D.PrefixDirs); + std::string TargetDir = getHexagonTargetDir(D.Dir, D.PrefixDirs); if (!llvm::is_contained(RootDirs, TargetDir)) RootDirs.push_back(TargetDir); @@ -597,8 +596,7 @@ void HexagonToolChain::getHexagonLibraryPaths(const ArgList &Args, HexagonToolChain::HexagonToolChain(const Driver &D, const llvm::Triple &Triple, const llvm::opt::ArgList &Args) : Linux(D, Triple, Args) { - const std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(), - D.PrefixDirs); + const std::string TargetDir = getHexagonTargetDir(D.Dir, D.PrefixDirs); // Note: Generic_GCC::Generic_GCC adds InstalledDir and getDriver().Dir to // program paths @@ -728,8 +726,7 @@ void HexagonToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, if (HasSysRoot) return; - std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(), - D.PrefixDirs); + std::string TargetDir = getHexagonTargetDir(D.Dir, D.PrefixDirs); addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include"); } @@ -744,7 +741,7 @@ void HexagonToolChain::addLibCxxIncludePaths( addLibStdCXXIncludePaths("/usr/include/c++/v1", "", "", DriverArgs, CC1Args); else { - std::string TargetDir = getHexagonTargetDir(D.InstalledDir, D.PrefixDirs); + std::string TargetDir = getHexagonTargetDir(D.Dir, D.PrefixDirs); addLibStdCXXIncludePaths(TargetDir + "/hexagon/include/c++/v1", "", "", DriverArgs, CC1Args); } @@ -753,7 +750,7 @@ void HexagonToolChain::addLibStdCxxIncludePaths( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const { const Driver &D = getDriver(); - std::string TargetDir = getHexagonTargetDir(D.InstalledDir, D.PrefixDirs); + std::string TargetDir = getHexagonTargetDir(D.Dir, D.PrefixDirs); addLibStdCXXIncludePaths(TargetDir + "/hexagon/include/c++", "", "", DriverArgs, CC1Args); } diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index dc09b13351f46f..6c2f23e57bce05 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -384,7 +384,7 @@ std::string Linux::computeSysRoot() const { if (getTriple().isAndroid()) { // Android toolchains typically include a sysroot at ../sysroot relative to // the clang binary. - const StringRef ClangDir = getDriver().getInstalledDir(); + const StringRef ClangDir = getDriver().Dir; std::string AndroidSysRootPath = (ClangDir + "/../sysroot").str(); if (getVFS().exists(AndroidSysRootPath)) return AndroidSysRootPath; diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp index 396522225158de..dc534a33e6d0ef 100644 --- a/clang/lib/Driver/ToolChains/MSVC.cpp +++ b/clang/lib/Driver/ToolChains/MSVC.cpp @@ -423,9 +423,7 @@ MSVCToolChain::MSVCToolChain(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : ToolChain(D, Triple, Args), CudaInstallation(D, Triple, Args), RocmInstallation(D, Triple, Args) { - getProgramPaths().push_back(getDriver().getInstalledDir()); - if (getDriver().getInstalledDir() != getDriver().Dir) - getProgramPaths().push_back(getDriver().Dir); + getProgramPaths().push_back(getDriver().Dir); std::optional<llvm::StringRef> VCToolsDir, VCToolsVersion; if (Arg *A = Args.getLastArg(options::OPT__SLASH_vctoolsdir)) diff --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp index 2b7fc104ea95aa..11e81ebde7eeb8 100644 --- a/clang/lib/Driver/ToolChains/MinGW.cpp +++ b/clang/lib/Driver/ToolChains/MinGW.cpp @@ -463,7 +463,7 @@ findClangRelativeSysroot(const Driver &D, const llvm::Triple &LiteralTriple, Subdirs.back() += "-w64-mingw32"; Subdirs.emplace_back(T.getArchName()); Subdirs.back() += "-w64-mingw32ucrt"; - StringRef ClangRoot = llvm::sys::path::parent_path(D.getInstalledDir()); + StringRef ClangRoot = llvm::sys::path::parent_path(D.Dir); StringRef Sep = llvm::sys::path::get_separator(); for (StringRef CandidateSubdir : Subdirs) { if (llvm::sys::fs::is_directory(ClangRoot + Sep + CandidateSubdir)) { @@ -487,10 +487,10 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : ToolChain(D, Triple, Args), CudaInstallation(D, Triple, Args), RocmInstallation(D, Triple, Args) { - getProgramPaths().push_back(getDriver().getInstalledDir()); + getProgramPaths().push_back(getDriver().Dir); std::string InstallBase = - std::string(llvm::sys::path::parent_path(getDriver().getInstalledDir())); + std::string(llvm::sys::path::parent_path(getDriver().Dir)); // The sequence for detecting a sysroot here should be kept in sync with // the testTriple function below. llvm::Triple LiteralTriple = getLiteralTriple(D, getTriple()); @@ -796,8 +796,7 @@ static bool testTriple(const Driver &D, const llvm::Triple &Triple, if (D.SysRoot.size()) return true; llvm::Triple LiteralTriple = getLiteralTriple(D, Triple); - std::string InstallBase = - std::string(llvm::sys::path::parent_path(D.getInstalledDir())); + std::string InstallBase = std::string(llvm::sys::path::parent_path(D.Dir)); if (llvm::ErrorOr<std::string> TargetSubdir = findClangRelativeSysroot(D, LiteralTriple, Triple, SubdirName)) return true; diff --git a/clang/lib/Driver/ToolChains/MipsLinux.cpp b/clang/lib/Driver/ToolChains/MipsLinux.cpp index 4183eccceedb4e..f61ae471b86d5c 100644 --- a/clang/lib/Driver/ToolChains/MipsLinux.cpp +++ b/clang/lib/Driver/ToolChains/MipsLinux.cpp @@ -57,8 +57,7 @@ void MipsLLVMToolChain::AddClangSystemIncludeArgs( const auto &Callback = Multilibs.includeDirsCallback(); if (Callback) { for (const auto &Path : Callback(SelectedMultilibs.back())) - addExternCSystemIncludeIfExists(DriverArgs, CC1Args, - D.getInstalledDir() + Path); + addExternCSystemIncludeIfExists(DriverArgs, CC1Args, D.Dir + Path); } } @@ -70,7 +69,7 @@ std::string MipsLLVMToolChain::computeSysRoot() const { if (!getDriver().SysRoot.empty()) return getDriver().SysRoot + SelectedMultilibs.back().osSuffix(); - const std::string InstalledDir(getDriver().getInstalledDir()); + const std::string InstalledDir(getDriver().Dir); std::string SysRootPath = InstalledDir + "/../sysroot" + SelectedMultilibs.back().osSuffix(); if (llvm::sys::fs::exists(SysRootPath)) @@ -97,7 +96,7 @@ void MipsLLVMToolChain::addLibCxxIncludePaths( llvm::opt::ArgStringList &CC1Args) const { if (const auto &Callback = Multilibs.includeDirsCallback()) { for (std::string Path : Callback(SelectedMultilibs.back())) { - Path = getDriver().getInstalledDir() + Path + "/c++/v1"; + Path = getDriver().Dir + Path + "/c++/v1"; if (llvm::sys::fs::exists(Path)) { addSystemInclude(DriverArgs, CC1Args, Path); return; diff --git a/clang/lib/Driver/ToolChains/OHOS.cpp b/clang/lib/Driver/ToolChains/OHOS.cpp index 1e50c9d71d59cc..4ceafa9e713922 100644 --- a/clang/lib/Driver/ToolChains/OHOS.cpp +++ b/clang/lib/Driver/ToolChains/OHOS.cpp @@ -274,7 +274,7 @@ std::string OHOS::computeSysRoot() const { std::string SysRoot = !getDriver().SysRoot.empty() ? getDriver().SysRoot - : makePath({getDriver().getInstalledDir(), "..", "..", "sysroot"}); + : makePath({getDriver().Dir, "..", "..", "sysroot"}); if (!llvm::sys::fs::exists(SysRoot)) return std::string(); diff --git a/clang/lib/Driver/ToolChains/WebAssembly.cpp b/clang/lib/Driver/ToolChains/WebAssembly.cpp index 57f4600727ec89..b8c2573d6265fb 100644 --- a/clang/lib/Driver/ToolChains/WebAssembly.cpp +++ b/clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -198,7 +198,7 @@ WebAssembly::WebAssembly(const Driver &D, const llvm::Triple &Triple, assert(Triple.isArch32Bit() != Triple.isArch64Bit()); - getProgramPaths().push_back(getDriver().getInstalledDir()); + getProgramPaths().push_back(getDriver().Dir); auto SysRoot = getDriver().SysRoot; if (getTriple().getOS() == llvm::Triple::UnknownOS) { diff --git a/clang/lib/Driver/ToolChains/ZOS.cpp b/clang/lib/Driver/ToolChains/ZOS.cpp index 96dbf602e7c1fc..d5fc7b8ef562a6 100644 --- a/clang/lib/Driver/ToolChains/ZOS.cpp +++ b/clang/lib/Driver/ToolChains/ZOS.cpp @@ -325,8 +325,7 @@ void ZOS::AddClangCXXStdlibIncludeArgs( switch (GetCXXStdlibType(DriverArgs)) { case ToolChain::CST_Libcxx: { // <install>/bin/../include/c++/v1 - llvm::SmallString<128> InstallBin = - llvm::StringRef(getDriver().getInstalledDir()); + llvm::SmallString<128> InstallBin(getDriver().Dir); llvm::sys::path::append(InstallBin, "..", "include", "c++", "v1"); TryAddIncludeFromPath(InstallBin, DriverArgs, CC1Args); break; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits