Author: Martin Storsjö Date: 2021-10-28T10:26:54+03:00 New Revision: 897c86dec5af2780d443edd852aa5911e2650ec6
URL: https://github.com/llvm/llvm-project/commit/897c86dec5af2780d443edd852aa5911e2650ec6 DIFF: https://github.com/llvm/llvm-project/commit/897c86dec5af2780d443edd852aa5911e2650ec6.diff LOG: [clang] [MinGW] Rename the 'Arch' member to 'SubdirName'. NFC. This string isn't a plain architecture name, but contains the whole subdir name used for the sysroot, which often is equal to the target triple. Differential Revision: https://reviews.llvm.org/D112387 Added: Modified: clang/lib/Driver/ToolChains/MinGW.cpp clang/lib/Driver/ToolChains/MinGW.h Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp index 6f1b7dd330fd..0bdeff38f52e 100644 --- a/clang/lib/Driver/ToolChains/MinGW.cpp +++ b/clang/lib/Driver/ToolChains/MinGW.cpp @@ -349,20 +349,20 @@ static bool findGccVersion(StringRef LibDir, std::string &GccLibDir, } void toolchains::MinGW::findGccLibDir() { - llvm::SmallVector<llvm::SmallString<32>, 2> Archs; - Archs.emplace_back(getTriple().getArchName()); - Archs[0] += "-w64-mingw32"; - Archs.emplace_back("mingw32"); - if (Arch.empty()) - Arch = std::string(Archs[0].str()); + llvm::SmallVector<llvm::SmallString<32>, 2> SubdirNames; + SubdirNames.emplace_back(getTriple().getArchName()); + SubdirNames[0] += "-w64-mingw32"; + SubdirNames.emplace_back("mingw32"); + if (SubdirName.empty()) + SubdirName = std::string(SubdirNames[0].str()); // lib: Arch Linux, Ubuntu, Windows // lib64: openSUSE Linux for (StringRef CandidateLib : {"lib", "lib64"}) { - for (StringRef CandidateArch : Archs) { + for (StringRef CandidateSysroot : SubdirNames) { llvm::SmallString<1024> LibDir(Base); - llvm::sys::path::append(LibDir, CandidateLib, "gcc", CandidateArch); + llvm::sys::path::append(LibDir, CandidateLib, "gcc", CandidateSysroot); if (findGccVersion(LibDir, GccLibDir, Ver)) { - Arch = std::string(CandidateArch); + SubdirName = std::string(CandidateSysroot); return; } } @@ -391,7 +391,7 @@ llvm::ErrorOr<std::string> toolchains::MinGW::findClangRelativeSysroot() { StringRef Sep = llvm::sys::path::get_separator(); for (StringRef CandidateSubdir : Subdirs) { if (llvm::sys::fs::is_directory(ClangRoot + Sep + CandidateSubdir)) { - Arch = std::string(CandidateSubdir); + SubdirName = std::string(CandidateSubdir); return (ClangRoot + Sep + CandidateSubdir).str(); } } @@ -423,10 +423,10 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, // correct crtbegin.o ,cetend.o would be found. getFilePaths().push_back(GccLibDir); getFilePaths().push_back( - (Base + Arch + llvm::sys::path::get_separator() + "lib").str()); + (Base + SubdirName + llvm::sys::path::get_separator() + "lib").str()); getFilePaths().push_back(Base + "lib"); // openSUSE - getFilePaths().push_back(Base + Arch + "/sys-root/mingw/lib"); + getFilePaths().push_back(Base + SubdirName + "/sys-root/mingw/lib"); NativeLLVMSupport = Args.getLastArgValue(options::OPT_fuse_ld_EQ, CLANG_DEFAULT_LINKER) @@ -573,11 +573,12 @@ void toolchains::MinGW::AddClangSystemIncludeArgs(const ArgList &DriverArgs, if (GetRuntimeLibType(DriverArgs) == ToolChain::RLT_Libgcc) { // openSUSE addSystemInclude(DriverArgs, CC1Args, - Base + Arch + "/sys-root/mingw/include"); + Base + SubdirName + "/sys-root/mingw/include"); } addSystemInclude(DriverArgs, CC1Args, - Base + Arch + llvm::sys::path::get_separator() + "include"); + Base + SubdirName + llvm::sys::path::get_separator() + + "include"); addSystemInclude(DriverArgs, CC1Args, Base + "include"); } @@ -596,8 +597,9 @@ void toolchains::MinGW::AddClangCXXStdlibIncludeArgs( .str(); if (getDriver().getVFS().exists(TargetDir)) addSystemInclude(DriverArgs, CC1Args, TargetDir); - addSystemInclude(DriverArgs, CC1Args, Base + Arch + Slash + "include" + - Slash + "c++" + Slash + "v1"); + addSystemInclude(DriverArgs, CC1Args, + Base + SubdirName + Slash + "include" + Slash + "c++" + + Slash + "v1"); addSystemInclude(DriverArgs, CC1Args, Base + "include" + Slash + "c++" + Slash + "v1"); break; @@ -606,9 +608,10 @@ void toolchains::MinGW::AddClangCXXStdlibIncludeArgs( case ToolChain::CST_Libstdcxx: llvm::SmallVector<llvm::SmallString<1024>, 4> CppIncludeBases; CppIncludeBases.emplace_back(Base); - llvm::sys::path::append(CppIncludeBases[0], Arch, "include", "c++"); + llvm::sys::path::append(CppIncludeBases[0], SubdirName, "include", "c++"); CppIncludeBases.emplace_back(Base); - llvm::sys::path::append(CppIncludeBases[1], Arch, "include", "c++", Ver); + llvm::sys::path::append(CppIncludeBases[1], SubdirName, "include", "c++", + Ver); CppIncludeBases.emplace_back(Base); llvm::sys::path::append(CppIncludeBases[2], "include", "c++", Ver); CppIncludeBases.emplace_back(GccLibDir); @@ -616,7 +619,7 @@ void toolchains::MinGW::AddClangCXXStdlibIncludeArgs( for (auto &CppIncludeBase : CppIncludeBases) { addSystemInclude(DriverArgs, CC1Args, CppIncludeBase); CppIncludeBase += Slash; - addSystemInclude(DriverArgs, CC1Args, CppIncludeBase + Arch); + addSystemInclude(DriverArgs, CC1Args, CppIncludeBase + SubdirName); addSystemInclude(DriverArgs, CC1Args, CppIncludeBase + "backward"); } break; diff --git a/clang/lib/Driver/ToolChains/MinGW.h b/clang/lib/Driver/ToolChains/MinGW.h index 2f1559fcf34c..efc50b4f9ee2 100644 --- a/clang/lib/Driver/ToolChains/MinGW.h +++ b/clang/lib/Driver/ToolChains/MinGW.h @@ -99,7 +99,7 @@ class LLVM_LIBRARY_VISIBILITY MinGW : public ToolChain { std::string Base; std::string GccLibDir; std::string Ver; - std::string Arch; + std::string SubdirName; mutable std::unique_ptr<tools::gcc::Preprocessor> Preprocessor; mutable std::unique_ptr<tools::gcc::Compiler> Compiler; void findGccLibDir(); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits