llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Frederik Harwath (frederik-h)

<details>
<summary>Changes</summary>

Reverts llvm/llvm-project#<!-- -->145056

---

Patch is 41.01 KiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/154368.diff


37 Files Affected:

- (modified) clang/docs/ReleaseNotes.rst (-16) 
- (modified) clang/include/clang/Basic/DiagnosticDriverKinds.td (-5) 
- (modified) clang/include/clang/Driver/ToolChain.h (+3-3) 
- (modified) clang/lib/Driver/ToolChain.cpp (+7-8) 
- (modified) clang/lib/Driver/ToolChains/Gnu.cpp (+63-158) 
- (modified) clang/lib/Driver/ToolChains/Gnu.h (+17-84) 
- (modified) clang/lib/Driver/ToolChains/Hurd.cpp (+6-8) 
- (modified) clang/lib/Driver/ToolChains/Linux.cpp (+9-9) 
- (modified) clang/lib/Driver/ToolChains/Managarm.cpp (+3-1) 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc10/usr/lib/gcc/x86_64-linux-gnu/10/crtbegin.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc10/usr/lib/gcc/x86_64-linux-gnu/10/crtend.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc10/usr/lib/gcc/x86_64-linux-gnu/10/include/c++/.keep
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc10/usr/lib/gcc/x86_64-linux-gnu/11/crtbegin.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc10/usr/lib/gcc/x86_64-linux-gnu/11/crtend.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc10/usr/lib/gcc/x86_64-linux-gnu/11/include/.keep
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc10/usr/lib/gcc/x86_64-linux-gnu/12/crtbegin.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc10/usr/lib/gcc/x86_64-linux-gnu/12/crtend.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc10/usr/lib/gcc/x86_64-linux-gnu/12/include/.keep
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc11/usr/lib/gcc/x86_64-linux-gnu/10/crtbegin.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc11/usr/lib/gcc/x86_64-linux-gnu/10/crtend.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc11/usr/lib/gcc/x86_64-linux-gnu/10/include/.keep
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc11/usr/lib/gcc/x86_64-linux-gnu/11/crtbegin.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc11/usr/lib/gcc/x86_64-linux-gnu/11/crtend.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc11/usr/lib/gcc/x86_64-linux-gnu/11/include/c++/.keep
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc11/usr/lib/gcc/x86_64-linux-gnu/12/crtbegin.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc11/usr/lib/gcc/x86_64-linux-gnu/12/crtend.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc11/usr/lib/gcc/x86_64-linux-gnu/12/include/.keep
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc12/usr/lib/gcc/x86_64-linux-gnu/10/crtbegin.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc12/usr/lib/gcc/x86_64-linux-gnu/10/crtend.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc12/usr/lib/gcc/x86_64-linux-gnu/10/include/.keep
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc12/usr/lib/gcc/x86_64-linux-gnu/11/crtbegin.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc12/usr/lib/gcc/x86_64-linux-gnu/11/crtend.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc12/usr/lib/gcc/x86_64-linux-gnu/11/include/c++/.keep
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc12/usr/lib/gcc/x86_64-linux-gnu/12/crtbegin.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc12/usr/lib/gcc/x86_64-linux-gnu/12/crtend.o
 () 
- (removed) 
clang/test/Driver/Inputs/gcc_toolchain_libstdcxx/gcc12/usr/lib/gcc/x86_64-linux-gnu/12/include/c++/.keep
 () 
- (removed) clang/test/Driver/gcc-toolchain-libstdcxx.cpp (-28) 


``````````diff
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 8f80b4cd49bd7..a8dc5352fcbb4 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -37,22 +37,6 @@ latest release, please see the `Clang Web Site 
<https://clang.llvm.org>`_ or the
 Potentially Breaking Changes
 ============================
 
-- Clang will now emit a warning if the auto-detected GCC installation
-  directory (i.e. the one with the largest version number) does not
-  contain libstdc++ include directories although a "complete" GCC
-  installation directory containing the include directories is
-  available. It is planned to change the auto-detection to prefer the
-  "complete" directory in the future.  The warning will disappear if
-  the libstdc++ include directories are either installed or removed
-  for all GCC installation directories considered by the
-  auto-detection; see the output of ``clang -v`` for a list of those
-  directories. If the GCC installations cannot be modified and
-  maintaining the current choice of the auto-detection is desired, the
-  GCC installation directory can be selected explicitly using the
-  ``--gcc-install-dir`` command line argument. This will silence the
-  warning. It can also be disabled using the
-  ``-Wno-gcc-install-dir-libstdcxx`` command line flag.
-
 C/C++ Language Potentially Breaking Changes
 -------------------------------------------
 
diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td 
b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index b8c7c6e8d6909..6df8f9932f30f 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -885,9 +885,4 @@ def warn_drv_openacc_without_cir
     : Warning<"OpenACC directives will result in no runtime behavior; use "
               "-fclangir to enable runtime effect">,
       InGroup<SourceUsesOpenACC>;
-
-def warn_drv_gcc_install_dir_libstdcxx : Warning<
-    "future releases of the clang compiler will prefer GCC installations "
-    "containing libstdc++ include directories; '%0' would be chosen over 
'%1'">,
-    InGroup<DiagGroup<"gcc-install-dir-libstdcxx">>;
 }
diff --git a/clang/include/clang/Driver/ToolChain.h 
b/clang/include/clang/Driver/ToolChain.h
index 1425714d34110..243056360370f 100644
--- a/clang/include/clang/Driver/ToolChain.h
+++ b/clang/include/clang/Driver/ToolChain.h
@@ -224,6 +224,9 @@ class ToolChain {
   static void addSystemFrameworkInclude(const llvm::opt::ArgList &DriverArgs,
                                         llvm::opt::ArgStringList &CC1Args,
                                         const Twine &Path);
+  static void addSystemInclude(const llvm::opt::ArgList &DriverArgs,
+                               llvm::opt::ArgStringList &CC1Args,
+                               const Twine &Path);
   static void addExternCSystemInclude(const llvm::opt::ArgList &DriverArgs,
                                       llvm::opt::ArgStringList &CC1Args,
                                       const Twine &Path);
@@ -243,9 +246,6 @@ class ToolChain {
   ///@}
 
 public:
-  static void addSystemInclude(const llvm::opt::ArgList &DriverArgs,
-                               llvm::opt::ArgStringList &CC1Args,
-                               const Twine &Path);
   virtual ~ToolChain();
 
   // Accessors
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 65b36217a940f..7667dbddb0ca2 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -1409,6 +1409,13 @@ void ToolChain::addSystemFrameworkInclude(const 
llvm::opt::ArgList &DriverArgs,
   CC1Args.push_back(DriverArgs.MakeArgString(Path));
 }
 
+/// Utility function to add a system include directory to CC1 arguments.
+void ToolChain::addSystemInclude(const ArgList &DriverArgs,
+                                 ArgStringList &CC1Args, const Twine &Path) {
+  CC1Args.push_back("-internal-isystem");
+  CC1Args.push_back(DriverArgs.MakeArgString(Path));
+}
+
 /// Utility function to add a system include directory with extern "C"
 /// semantics to CC1 arguments.
 ///
@@ -1431,14 +1438,6 @@ void ToolChain::addExternCSystemIncludeIfExists(const 
ArgList &DriverArgs,
     addExternCSystemInclude(DriverArgs, CC1Args, Path);
 }
 
-/// Utility function to add a system include directory to CC1 arguments.
-/*static*/ void ToolChain::addSystemInclude(const ArgList &DriverArgs,
-                                            ArgStringList &CC1Args,
-                                            const Twine &Path) {
-  CC1Args.push_back("-internal-isystem");
-  CC1Args.push_back(DriverArgs.MakeArgString(Path));
-}
-
 /// Utility function to add a list of system framework directories to CC1.
 void ToolChain::addSystemFrameworkIncludes(const ArgList &DriverArgs,
                                            ArgStringList &CC1Args,
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp 
b/clang/lib/Driver/ToolChains/Gnu.cpp
index 3dade2bdf2277..01b146db24f3e 100644
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -2123,11 +2123,10 @@ void Generic_GCC::GCCInstallationDetector::init(
       StringRef TripleText =
           llvm::sys::path::filename(llvm::sys::path::parent_path(InstallDir));
 
-      SelectedInstallation.Version = GCCVersion::Parse(VersionText);
-      SelectedInstallation.GCCTriple.setTriple(TripleText);
-      SelectedInstallation.GCCInstallPath = std::string(InstallDir);
-      SelectedInstallation.GCCParentLibPath =
-          SelectedInstallation.GCCInstallPath + "/../../..";
+      Version = GCCVersion::Parse(VersionText);
+      GCCTriple.setTriple(TripleText);
+      GCCInstallPath = std::string(InstallDir);
+      GCCParentLibPath = GCCInstallPath + "/../../..";
       IsValid = true;
     }
     return;
@@ -2187,7 +2186,7 @@ void Generic_GCC::GCCInstallationDetector::init(
   // Loop over the various components which exist and select the best GCC
   // installation available. GCC installs are ranked by version number.
   const GCCVersion VersionZero = GCCVersion::Parse("0.0.0");
-  SelectedInstallation.Version = VersionZero;
+  Version = VersionZero;
   for (const std::string &Prefix : Prefixes) {
     auto &VFS = D.getVFS();
     if (!VFS.exists(Prefix))
@@ -2215,7 +2214,7 @@ void Generic_GCC::GCCInstallationDetector::init(
     }
 
     // Skip other prefixes once a GCC installation is found.
-    if (SelectedInstallation.Version > VersionZero)
+    if (Version > VersionZero)
       break;
   }
 }
@@ -2224,17 +2223,14 @@ void 
Generic_GCC::GCCInstallationDetector::print(raw_ostream &OS) const {
   for (const auto &InstallPath : CandidateGCCInstallPaths)
     OS << "Found candidate GCC installation: " << InstallPath << "\n";
 
-  if (!SelectedInstallation.GCCInstallPath.empty())
-    OS << "Selected GCC installation: " << SelectedInstallation.GCCInstallPath
-       << "\n";
+  if (!GCCInstallPath.empty())
+    OS << "Selected GCC installation: " << GCCInstallPath << "\n";
 
   for (const auto &Multilib : Multilibs)
     OS << "Candidate multilib: " << Multilib << "\n";
 
-  if (Multilibs.size() != 0 ||
-      !SelectedInstallation.SelectedMultilib.isDefault())
-    OS << "Selected multilib: " << SelectedInstallation.SelectedMultilib
-       << "\n";
+  if (Multilibs.size() != 0 || !SelectedMultilib.isDefault())
+    OS << "Selected multilib: " << SelectedMultilib << "\n";
 }
 
 bool Generic_GCC::GCCInstallationDetector::getBiarchSibling(Multilib &M) const 
{
@@ -2772,50 +2768,14 @@ bool 
Generic_GCC::GCCInstallationDetector::ScanGCCForMultilibs(
   }
 
   Multilibs = Detected.Multilibs;
-  SelectedInstallation.SelectedMultilib =
-      Detected.SelectedMultilibs.empty() ? Multilib()
-                                         : Detected.SelectedMultilibs.back();
+  SelectedMultilib = Detected.SelectedMultilibs.empty()
+                         ? Multilib()
+                         : Detected.SelectedMultilibs.back();
   BiarchSibling = Detected.BiarchSibling;
 
   return true;
 }
 
-bool Generic_GCC::GCCInstallationDetector::SelectGCCInstallationDirectory(
-    const SmallVector<Generic_GCC::GCCInstallCandidate, 3> &Installations,
-    const ArgList &Args,
-    Generic_GCC::GCCInstallCandidate &SelectedInstallation) const {
-  if (Installations.empty())
-    return false;
-
-  SelectedInstallation =
-      *max_element(Installations, [](const auto &Max, const auto &I) {
-        return I.Version > Max.Version;
-      });
-
-  // FIXME Start selecting installation with libstdc++ in clang 22,
-  // using the current way of selecting the installation as a fallback
-  // only.  For now, warn if the installation with libstdc++ differs
-  // from SelectedInstallation.
-  const GCCInstallCandidate *InstallWithIncludes = nullptr;
-  for (const auto &I : Installations) {
-    if ((!InstallWithIncludes || I.Version > InstallWithIncludes->Version) &&
-        GCCInstallationHasLibStdcxxIncludePaths(I, Args))
-      InstallWithIncludes = &I;
-  }
-
-  if (InstallWithIncludes && SelectedInstallation.GCCInstallPath !=
-                                 InstallWithIncludes->GCCInstallPath)
-    D.Diag(diag::warn_drv_gcc_install_dir_libstdcxx)
-        << InstallWithIncludes->GCCInstallPath
-        << SelectedInstallation.GCCInstallPath;
-
-  // TODO Warn if SelectedInstallation does not contain libstdc++ includes
-  // although compiler flags indicate that it is required (C++ compilation,
-  // libstdc++ not explicitly disabled).
-
-  return true;
-}
-
 void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
     const llvm::Triple &TargetTriple, const ArgList &Args,
     const std::string &LibDir, StringRef CandidateTriple,
@@ -2845,7 +2805,6 @@ void 
Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
        TargetTriple.getVendor() == llvm::Triple::Freescale ||
            TargetTriple.getVendor() == llvm::Triple::OpenEmbedded}};
 
-  SmallVector<GCCInstallCandidate, 3> Installations;
   for (auto &Suffix : Suffixes) {
     if (!Suffix.Active)
       continue;
@@ -2863,31 +2822,23 @@ void 
Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
           continue; // Saw this path before; no need to look at it again.
       if (CandidateVersion.isOlderThan(4, 1, 1))
         continue;
-      if (CandidateVersion <= SelectedInstallation.Version && IsValid)
+      if (CandidateVersion <= Version)
         continue;
 
       if (!ScanGCCForMultilibs(TargetTriple, Args, LI->path(),
                                NeedsBiarchSuffix))
         continue;
 
-      GCCInstallCandidate Installation;
-      Installation.Version = CandidateVersion;
-      Installation.GCCTriple.setTriple(CandidateTriple);
+      Version = CandidateVersion;
+      GCCTriple.setTriple(CandidateTriple);
       // FIXME: We hack together the directory name here instead of
       // using LI to ensure stable path separators across Windows and
       // Linux.
-      Installation.GCCInstallPath =
-          (LibDir + "/" + LibSuffix + "/" + VersionText).str();
-      Installation.GCCParentLibPath =
-          (Installation.GCCInstallPath + "/../" + Suffix.ReversePath).str();
-      Installation.SelectedMultilib = getMultilib();
-
-      Installations.push_back(Installation);
+      GCCInstallPath = (LibDir + "/" + LibSuffix + "/" + VersionText).str();
+      GCCParentLibPath = (GCCInstallPath + "/../" + Suffix.ReversePath).str();
+      IsValid = true;
     }
   }
-
-  IsValid |=
-      SelectGCCInstallationDirectory(Installations, Args, 
SelectedInstallation);
 }
 
 bool Generic_GCC::GCCInstallationDetector::ScanGentooConfigs(
@@ -2965,12 +2916,10 @@ bool 
Generic_GCC::GCCInstallationDetector::ScanGentooGccConfig(
                                    NeedsBiarchSuffix))
             continue;
 
-          SelectedInstallation.Version =
-              GCCVersion::Parse(ActiveVersion.second);
-          SelectedInstallation.GCCInstallPath = GentooPath;
-          SelectedInstallation.GCCParentLibPath =
-              GentooPath + std::string("/../../..");
-          SelectedInstallation.GCCTriple.setTriple(ActiveVersion.first);
+          Version = GCCVersion::Parse(ActiveVersion.second);
+          GCCInstallPath = GentooPath;
+          GCCParentLibPath = GentooPath + std::string("/../../..");
+          GCCTriple.setTriple(ActiveVersion.first);
           IsValid = true;
           return true;
         }
@@ -3173,9 +3122,8 @@ void Generic_GCC::AddMultilibIncludeArgs(const ArgList 
&DriverArgs,
   // gcc TOOL_INCLUDE_DIR.
   const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
   std::string LibPath(GCCInstallation.getParentLibPath());
-  ToolChain::addSystemInclude(DriverArgs, CC1Args,
-                              Twine(LibPath) + "/../" + GCCTriple.str() +
-                                  "/include");
+  addSystemInclude(DriverArgs, CC1Args,
+                   Twine(LibPath) + "/../" + GCCTriple.str() + "/include");
 
   const auto &Callback = Multilibs.includeDirsCallback();
   if (Callback) {
@@ -3262,14 +3210,12 @@ Generic_GCC::addLibCxxIncludePaths(const 
llvm::opt::ArgList &DriverArgs,
     return;
 }
 
-static bool addLibStdCXXIncludePaths(llvm::vfs::FileSystem &vfs,
-                                     Twine IncludeDir, StringRef Triple,
-                                     Twine IncludeSuffix,
-                                     const llvm::opt::ArgList &DriverArgs,
-                                     llvm::opt::ArgStringList &CC1Args,
-                                     bool DetectDebian = false) {
-
-  if (!vfs.exists(IncludeDir))
+bool Generic_GCC::addLibStdCXXIncludePaths(Twine IncludeDir, StringRef Triple,
+                                           Twine IncludeSuffix,
+                                           const llvm::opt::ArgList 
&DriverArgs,
+                                           llvm::opt::ArgStringList &CC1Args,
+                                           bool DetectDebian) const {
+  if (!getVFS().exists(IncludeDir))
     return false;
 
   // Debian native gcc uses g++-multiarch-incdir.diff which uses
@@ -3281,48 +3227,39 @@ static bool 
addLibStdCXXIncludePaths(llvm::vfs::FileSystem &vfs,
   std::string Path =
       (Include + "/" + Triple + Dir.substr(Include.size()) + IncludeSuffix)
           .str();
-  if (DetectDebian && !vfs.exists(Path))
+  if (DetectDebian && !getVFS().exists(Path))
     return false;
 
   // GPLUSPLUS_INCLUDE_DIR
-  ToolChain::addSystemInclude(DriverArgs, CC1Args, IncludeDir);
+  addSystemInclude(DriverArgs, CC1Args, IncludeDir);
   // GPLUSPLUS_TOOL_INCLUDE_DIR. If Triple is not empty, add a target-dependent
   // include directory.
   if (DetectDebian)
-    ToolChain::addSystemInclude(DriverArgs, CC1Args, Path);
+    addSystemInclude(DriverArgs, CC1Args, Path);
   else if (!Triple.empty())
-    ToolChain::addSystemInclude(DriverArgs, CC1Args,
-                                IncludeDir + "/" + Triple + IncludeSuffix);
+    addSystemInclude(DriverArgs, CC1Args,
+                     IncludeDir + "/" + Triple + IncludeSuffix);
   // GPLUSPLUS_BACKWARD_INCLUDE_DIR
-  ToolChain::addSystemInclude(DriverArgs, CC1Args, IncludeDir + "/backward");
+  addSystemInclude(DriverArgs, CC1Args, IncludeDir + "/backward");
   return true;
 }
 
-bool Generic_GCC::addLibStdCXXIncludePaths(Twine IncludeDir, StringRef Triple,
-                                           Twine IncludeSuffix,
-                                           const llvm::opt::ArgList 
&DriverArgs,
-                                           llvm::opt::ArgStringList &CC1Args,
-                                           bool DetectDebian) const {
-  return ::addLibStdCXXIncludePaths(getVFS(), IncludeDir, Triple, 
IncludeSuffix,
-                                    DriverArgs, CC1Args, DetectDebian);
-}
-
-bool Generic_GCC::GCCInstallCandidate::addGCCLibStdCxxIncludePaths(
-    llvm::vfs::FileSystem &vfs, const llvm::opt::ArgList &DriverArgs,
-    llvm::opt::ArgStringList &CC1Args, StringRef DebianMultiarch) const {
+bool Generic_GCC::addGCCLibStdCxxIncludePaths(
+    const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
+    StringRef DebianMultiarch) const {
+  assert(GCCInstallation.isValid());
 
   // By default, look for the C++ headers in an include directory adjacent to
   // the lib directory of the GCC installation. Note that this is expect to be
   // equivalent to '/usr/include/c++/X.Y' in almost all cases.
-  StringRef LibDir = getParentLibPath();
-  StringRef InstallDir = getInstallPath();
-  StringRef TripleStr = getTriple().str();
-  const Multilib &Multilib = getMultilib();
-  const GCCVersion &Version = getVersion();
+  StringRef LibDir = GCCInstallation.getParentLibPath();
+  StringRef InstallDir = GCCInstallation.getInstallPath();
+  StringRef TripleStr = GCCInstallation.getTriple().str();
+  const Multilib &Multilib = GCCInstallation.getMultilib();
+  const GCCVersion &Version = GCCInstallation.getVersion();
 
   // Try /../$triple/include/c++/$version (gcc --print-multiarch is not empty).
-  if (::addLibStdCXXIncludePaths(
-          vfs,
+  if (addLibStdCXXIncludePaths(
           LibDir.str() + "/../" + TripleStr + "/include/c++/" + Version.Text,
           TripleStr, Multilib.includeSuffix(), DriverArgs, CC1Args))
     return true;
@@ -3330,24 +3267,22 @@ bool 
Generic_GCC::GCCInstallCandidate::addGCCLibStdCxxIncludePaths(
   // Try /gcc/$triple/$version/include/c++/ (gcc --print-multiarch is not
   // empty). Like above but for GCC built with
   // --enable-version-specific-runtime-libs.
-  if (::addLibStdCXXIncludePaths(vfs,
-                                 LibDir.str() + "/gcc/" + TripleStr + "/" +
-                                     Version.Text + "/include/c++/",
-                                 TripleStr, Multilib.includeSuffix(),
-                                 DriverArgs, CC1Args))
+  if (addLibStdCXXIncludePaths(LibDir.str() + "/gcc/" + TripleStr + "/" +
+                                   Version.Text + "/include/c++/",
+                               TripleStr, Multilib.includeSuffix(), DriverArgs,
+                               CC1Args))
     return true;
 
   // Detect Debian g++-multiarch-incdir.diff.
-  if (::addLibStdCXXIncludePaths(
-          vfs, LibDir.str() + "/../include/c++/" + Version.Text,
-          DebianMultiarch, Multilib.includeSuffix(), DriverArgs, CC1Args,
-          /*Debian=*/true))
+  if (addLibStdCXXIncludePaths(LibDir.str() + "/../include/c++/" + 
Version.Text,
+                               DebianMultiarch, Multilib.includeSuffix(),
+                               DriverArgs, CC1Args, /*Debian=*/true))
     return true;
 
   // Try /../include/c++/$version (gcc --print-multiarch is empty).
-  if (::addLibStdCXXIncludePaths(
-          vfs, LibDir.str() + "/../include/c++/" + Version.Text, TripleStr,
-          Multilib.includeSuffix(), DriverArgs, CC1Args))
+  if (addLibStdCXXIncludePaths(LibDir.str() + "/../include/c++/" + 
Version.Text,
+                               TripleStr, Multilib.includeSuffix(), DriverArgs,
+                               CC1Args))
     return true;
 
   // Otherwise, fall back on a bunch of options which don't use multiarch
@@ -3362,50 +3297,20 @@ bool 
Generic_GCC::GCCInstallCandidate::addGCCLibStdCxxIncludePaths(
   };
 
   for (const auto &IncludePath : LibStdCXXIncludePathCandidates) {
-    if (::addLibStdCXXIncludePaths(vfs, IncludePath, TripleStr,
-                                   Multilib.includeSuffix(), DriverArgs,
-                                   CC1Args))
+    if (addLibStdCXXIncludePaths(IncludePath, TripleStr,
+                                 Multilib.includeSuffix(), DriverArgs, 
CC1Args))
       return true;
   }
   return false;
 }
 
-bool Generic_GCC::GCCInstallationDetector::
-    GCCInstallationHasLibStdcxxIncludePaths(
-        const GCCInstallCandidate &GCCInstallation,
-        const llvm::opt::ArgList &DriverArgs) const {
-  StringRef DebianMultiarch =
-      TripleToDebianMultiarch(GCCInstallation.getTriple());
-
-  // The following function checks for libstdc++ include paths and
-  // adds them to the provided argument list.  Here we just need the
-  // check.
-  llvm::opt::ArgStringList dummyCC1Args;
-  return GCCInstallation.addGCCLibStdCxxIncludePaths(
-      D.getVFS(), DriverArgs, dummyCC1Args, DebianMultiarch);
-}
-
-bool Generic_GCC::addGCCLibStdCxxIncludePaths(
-    const llvm::opt::ArgList &DriverArgs,
-    ll...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/154368
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to