Author: Tomohiro Kashiwada Date: 2026-09-12T00:01:48+03:00 New Revision: 364bed30971df7fb50d7aadfc21f3996a97bf3a4
URL: https://github.com/llvm/llvm-project/commit/364bed30971df7fb50d7aadfc21f3996a97bf3a4 DIFF: https://github.com/llvm/llvm-project/commit/364bed30971df7fb50d7aadfc21f3996a97bf3a4.diff LOG: (NFC)[Clang][Driver] Add ToolChain::GetFilePathIfExists and use it (#221063) Replaces patterns like `if (TC.GetFilePath("file") != "file")` to avoid repeating `"file"`. Added: Modified: clang/include/clang/Driver/ToolChain.h clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/Cygwin.cpp clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/WebAssembly.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h index 59c93459c64b9..c8cd9953efa42 100644 --- a/clang/include/clang/Driver/ToolChain.h +++ b/clang/include/clang/Driver/ToolChain.h @@ -435,6 +435,7 @@ class ToolChain { // Helper methods std::string GetFilePath(const char *Name) const; + std::optional<std::string> GetFilePathIfExists(const char *Name) const; std::string GetProgramPath(const char *Name) const; /// Returns the linker path, respecting the -fuse-ld= argument to determine diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index 2a17df5ff9132..4b194b5b70534 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -1284,6 +1284,14 @@ std::string ToolChain::GetFilePath(const char *Name) const { return D.GetFilePath(Name, *this); } +std::optional<std::string> +ToolChain::GetFilePathIfExists(const char *Name) const { + std::string Path = D.GetFilePath(Name, *this); + if (Path == Name) + return std::nullopt; + return Path; +} + std::string ToolChain::GetProgramPath(const char *Name) const { return D.GetProgramPath(Name, *this); } diff --git a/clang/lib/Driver/ToolChains/Cygwin.cpp b/clang/lib/Driver/ToolChains/Cygwin.cpp index f4854e9c6ce64..c5ef00946c075 100644 --- a/clang/lib/Driver/ToolChains/Cygwin.cpp +++ b/clang/lib/Driver/ToolChains/Cygwin.cpp @@ -377,9 +377,8 @@ void cygwin::Linker::ConstructJob(Compilation &C, const JobAction &JA, if (!Args.hasArg(options::OPT_nostartfiles)) { if (!Args.hasArg(options::OPT_mdll, options::OPT_shared)) { - std::string O = ToolChain.GetFilePath("default-manifest.o"); - if (O != "default-manifest.o") - CmdArgs.push_back(Args.MakeArgString(std::move(O))); + if (auto O = ToolChain.GetFilePathIfExists("default-manifest.o")) + CmdArgs.push_back(Args.MakeArgString(std::move(*O))); } CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtend.o"))); } diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 5285f55897732..dad719cbb1eaf 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -548,8 +548,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, options::OPT_fstack_protector_all, options::OPT_fstack_protector_strong)) WantsSSP = !A->getOption().matches(options::OPT_fno_stack_protector); - if (WantsSSP && - ToolChain.GetFilePath("libssp_nonshared.a") != "libssp_nonshared.a") + if (WantsSSP && ToolChain.GetFilePathIfExists("libssp_nonshared.a")) CmdArgs.push_back("-lssp_nonshared"); } diff --git a/clang/lib/Driver/ToolChains/WebAssembly.cpp b/clang/lib/Driver/ToolChains/WebAssembly.cpp index 7d5d406df2399..fee1f47f073ea 100644 --- a/clang/lib/Driver/ToolChains/WebAssembly.cpp +++ b/clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -166,7 +166,7 @@ void wasm::Linker::ConstructJob(Compilation &C, const JobAction &JA, // crt1-command.o. And once LLVM no longer needs to support WASI libc // versions before that, it can switch to using crt1-command.o. Crt1 = "crt1.o"; - if (ToolChain.GetFilePath("crt1-command.o") != "crt1-command.o") + if (ToolChain.GetFilePathIfExists("crt1-command.o")) Crt1 = "crt1-command.o"; } else { Crt1 = "crt1-reactor.o"; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
