https://github.com/MythreyaK updated https://github.com/llvm/llvm-project/pull/183453
>From be1d580f674493186646a98a0d497afc3472877f Mon Sep 17 00:00:00 2001 From: Mythreya <[email protected]> Date: Wed, 25 Feb 2026 02:21:57 -0800 Subject: [PATCH 1/4] [clang] add x86_64 baremetal triple include search paths --- clang/lib/Driver/ToolChains/BareMetal.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp index 0602a8a19f943..726579a888ea0 100644 --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -51,6 +51,12 @@ static bool isPPCBareMetal(const llvm::Triple &Triple) { Triple.getEnvironment() == llvm::Triple::EABI; } +/// Is the triple {ix86,x86_64}-*-none-elf? +static bool isPCBareMetal(const llvm::Triple &Triple) { + return Triple.isX86() && Triple.getOS() == llvm::Triple::UnknownOS && + Triple.getObjectFormat() == llvm::Triple::ELF; +} + static bool findRISCVMultilibs(const Driver &D, const llvm::Triple &TargetTriple, const ArgList &Args, DetectedMultilibs &Result) { @@ -351,7 +357,7 @@ void BareMetal::findMultilibs(const Driver &D, const llvm::Triple &Triple, bool BareMetal::handlesTarget(const llvm::Triple &Triple) { return arm::isARMEABIBareMetal(Triple) || aarch64::isAArch64BareMetal(Triple) || isRISCVBareMetal(Triple) || - isPPCBareMetal(Triple); + isPPCBareMetal(Triple) || isPCBareMetal(Triple); } Tool *BareMetal::buildLinker() const { >From 9e673ba00a810763ab64f0766eade445b10564ce Mon Sep 17 00:00:00 2001 From: Mythreya <[email protected]> Date: Thu, 26 Feb 2026 01:54:23 -0800 Subject: [PATCH 2/4] tests updates reorder includes a bit so that the resource dir comes last, after the triple-local directory --- clang/lib/Driver/ToolChains/BareMetal.cpp | 14 +++++++------- clang/test/Driver/baremetal.cpp | 14 +++++++------- clang/test/Driver/riscv32-toolchain.c | 2 +- clang/test/Driver/riscv64-toolchain.c | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp index 726579a888ea0..c4ef982ed3539 100644 --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -54,7 +54,7 @@ static bool isPPCBareMetal(const llvm::Triple &Triple) { /// Is the triple {ix86,x86_64}-*-none-elf? static bool isPCBareMetal(const llvm::Triple &Triple) { return Triple.isX86() && Triple.getOS() == llvm::Triple::UnknownOS && - Triple.getObjectFormat() == llvm::Triple::ELF; + Triple.getEnvironmentName() == "elf"; } static bool findRISCVMultilibs(const Driver &D, @@ -405,12 +405,6 @@ void BareMetal::AddClangSystemIncludeArgs(const ArgList &DriverArgs, if (DriverArgs.hasArg(options::OPT_nostdinc)) return; - if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { - SmallString<128> Dir(getDriver().ResourceDir); - llvm::sys::path::append(Dir, "include"); - addSystemInclude(DriverArgs, CC1Args, Dir.str()); - } - if (DriverArgs.hasArg(options::OPT_nostdlibinc)) return; @@ -434,6 +428,12 @@ void BareMetal::AddClangSystemIncludeArgs(const ArgList &DriverArgs, addSystemInclude(DriverArgs, CC1Args, Dir.str()); } } + + if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { + SmallString<128> Dir(getDriver().ResourceDir); + llvm::sys::path::append(Dir, "include"); + addSystemInclude(DriverArgs, CC1Args, Dir.str()); + } } void BareMetal::addClangTargetOptions(const ArgList &DriverArgs, diff --git a/clang/test/Driver/baremetal.cpp b/clang/test/Driver/baremetal.cpp index 986aaff5b630d..2d28ffb7828ef 100644 --- a/clang/test/Driver/baremetal.cpp +++ b/clang/test/Driver/baremetal.cpp @@ -243,24 +243,24 @@ // CHECK-AARCH64-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]] // CHECK-AARCH64-NO-HOST-INC: "-resource-dir" "[[RESOURCE:[^"]+]]" // CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" -// CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // RUN: %clang -no-canonical-prefixes %s -### --target=riscv32-unknown-elf 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-RISCV32-NO-HOST-INC %s // CHECK-RISCV32-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]] // CHECK-RISCV32-NO-HOST-INC: "-resource-dir" "[[RESOURCE:[^"]+]]" // CHECK-RISCV32-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" -// CHECK-RISCV32-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-RISCV32-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-RISCV32-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // RUN: %clang -no-canonical-prefixes %s -### --target=riscv64-unknown-elf 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-RISCV64-NO-HOST-INC %s // CHECK-RISCV64-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]] // CHECK-RISCV64-NO-HOST-INC: "-resource-dir" "[[RESOURCE:[^"]+]]" // CHECK-RISCV64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" -// CHECK-RISCV64-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-RISCV64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-RISCV64-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // RUN: %clang %s -### --target=riscv64-unknown-elf -o %t.out -L some/directory/user/asked/for \ // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf 2>&1 \ @@ -524,8 +524,8 @@ // CHECK-PPCEABI: "-nostdsysteminc" // CHECK-PPCEABI-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]" // CHECK-PPCEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" -// CHECK-PPCEABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-PPCEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-PPCEABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-PPCEABI-NEXT: ld{{(.exe)?}}" "-Bstatic" // CHECK-PPCEABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib" // CHECK-PPCEABI-SAME:"{{.*}}.o" @@ -539,8 +539,8 @@ // CHECK-PPC64EABI: "-nostdsysteminc" // CHECK-PPC64EABI-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]" // CHECK-PPC64EABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" -// CHECK-PPC64EABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-PPC64EABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-PPC64EABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-PPC64EABI-NEXT: ld{{(.exe)?}}" "-Bstatic" // CHECK-PPC64EABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib" // CHECK-PPC64EABI-SAME:"{{.*}}.o" @@ -554,8 +554,8 @@ // CHECK-PPCLEEABI: "-nostdsysteminc" // CHECK-PPCLEEABI-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]" // CHECK-PPCLEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" -// CHECK-PPCLEEABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-PPCLEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-PPCLEEABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-PPCLEEABI-NEXT: ld{{(.exe)?}}" "-Bstatic" // CHECK-PPCLEEABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib" // CHECK-PPCLEEABI-SAME:"{{.*}}.o" @@ -569,8 +569,8 @@ // CHECK-PPC64LEEABI: "-nostdsysteminc" // CHECK-PPC64LEEABI-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]" // CHECK-PPC64LEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" -// CHECK-PPC64LEEABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-PPC64LEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-PPC64LEEABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" // CHECK-PPC64LEEABI-NEXT: ld{{(.exe)?}}" "-Bstatic" // CHECK-PPC64LEEABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib" // CHECK-PPC64LEEABI-SAME:"{{.*}}.o" diff --git a/clang/test/Driver/riscv32-toolchain.c b/clang/test/Driver/riscv32-toolchain.c index 04acf1e7edbe0..23f41bfd4c12e 100644 --- a/clang/test/Driver/riscv32-toolchain.c +++ b/clang/test/Driver/riscv32-toolchain.c @@ -203,8 +203,8 @@ // RUN: --gcc-toolchain=%S/Inputs/basic_riscv32_tree --sysroot= \ // RUN: -resource-dir=%s/Inputs/resource_dir 2>&1 \ // RUN: | FileCheck -check-prefix=RESOURCE-INC %s -// RESOURCE-INC: "-internal-isystem" "{{.*}}/Inputs/resource_dir/include" // RESOURCE-INC: "-internal-isystem" "{{.*}}/basic_riscv32_tree{{.*}}riscv32-unknown-linux-gnu/include" +// RESOURCE-INC: "-internal-isystem" "{{.*}}/Inputs/resource_dir/include" // RUN: %clang -### %s --target=riscv32 \ // RUN: --gcc-toolchain=%S/Inputs/basic_riscv32_tree --sysroot= \ diff --git a/clang/test/Driver/riscv64-toolchain.c b/clang/test/Driver/riscv64-toolchain.c index 378f3d9db7bad..9f206979b4ad7 100644 --- a/clang/test/Driver/riscv64-toolchain.c +++ b/clang/test/Driver/riscv64-toolchain.c @@ -159,8 +159,8 @@ // RUN: --gcc-toolchain=%S/Inputs/basic_riscv64_tree --sysroot= \ // RUN: -resource-dir=%s/Inputs/resource_dir 2>&1 \ // RUN: | FileCheck -check-prefix=RESOURCE-INC %s -// RESOURCE-INC: "-internal-isystem" "{{.*}}/Inputs/resource_dir/include" // RESOURCE-INC: "-internal-isystem" "{{.*}}/basic_riscv64_tree/{{.*}}riscv64-unknown-linux-gnu/include" +// RESOURCE-INC: "-internal-isystem" "{{.*}}/Inputs/resource_dir/include" // RUN: %clang -### %s --target=riscv64 \ // RUN: --gcc-toolchain=%S/Inputs/basic_riscv64_tree --sysroot= \ >From 267552ddcdf3a1b01a536adb3a44553c17afd747 Mon Sep 17 00:00:00 2001 From: Mythreya <[email protected]> Date: Thu, 26 Feb 2026 02:13:54 -0800 Subject: [PATCH 3/4] Add pc baremetal tests --- clang/test/Driver/baremetal.cpp | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/clang/test/Driver/baremetal.cpp b/clang/test/Driver/baremetal.cpp index 2d28ffb7828ef..166370d42521a 100644 --- a/clang/test/Driver/baremetal.cpp +++ b/clang/test/Driver/baremetal.cpp @@ -262,6 +262,22 @@ // CHECK-RISCV64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" // CHECK-RISCV64-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" +// RUN: %clang -no-canonical-prefixes %s -### --target=i386-unknown-elf 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-PCX86-NO-HOST-INC %s +// CHECK-PCX86-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]] +// CHECK-PCX86-NO-HOST-INC: "-resource-dir" "[[RESOURCE:[^"]+]]" +// CHECK-PCX86-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" +// CHECK-PCX86-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-PCX86-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" + +// RUN: %clang -no-canonical-prefixes %s -### --target=x86_64-unknown-elf 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-PCX86_64-NO-HOST-INC %s +// CHECK-PCX86_64-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]] +// CHECK-PCX86_64-NO-HOST-INC: "-resource-dir" "[[RESOURCE:[^"]+]]" +// CHECK-PCX86_64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" +// CHECK-PCX86_64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-PCX86_64-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" + // RUN: %clang %s -### --target=riscv64-unknown-elf -o %t.out -L some/directory/user/asked/for \ // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-RV64 %s @@ -578,6 +594,36 @@ // CHECK-PPC64LEEABI-SAME: "-lc" // CHECK-PPC64LEEABI-SAME: "-o" "a.out" +// RUN: %clang -no-canonical-prefixes %s -### --target=i386-unknown-elf 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-PCX86ELF %s +// CHECK-PCX86ELF: InstalledDir: [[INSTALLEDDIR:.+]] +// CHECK-PCX86ELF: "-nostdsysteminc" +// CHECK-PCX86ELF-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]" +// CHECK-PCX86ELF-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" +// CHECK-PCX86ELF-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-PCX86ELF-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" +// CHECK-PCX86ELF-NEXT: ld{{(.exe)?}}" "-Bstatic" "-m" "elf_i386" +// CHECK-PCX86ELF-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib" +// CHECK-PCX86ELF-SAME:"{{.*}}.o" +// CHECK-PCX86ELF-SAME: "{{[^"]*}}libclang_rt.builtins.a" +// CHECK-PCX86ELF-SAME: "-lc" +// CHECK-PCX86ELF-SAME: "-o" "a.out" + +// RUN: %clang -no-canonical-prefixes %s -### --target=x86_64-unknown-elf 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-PCX86_64ELF %s +// CHECK-PCX86_64ELF: InstalledDir: [[INSTALLEDDIR:.+]] +// CHECK-PCX86_64ELF: "-nostdsysteminc" +// CHECK-PCX86_64ELF-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]" +// CHECK-PCX86_64ELF-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1" +// CHECK-PCX86_64ELF-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include" +// CHECK-PCX86_64ELF-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" +// CHECK-PCX86_64ELF-NEXT: ld{{(.exe)?}}" "-Bstatic" "-m" "elf_x86_64" +// CHECK-PCX86_64ELF-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib" +// CHECK-PCX86_64ELF-SAME:"{{.*}}.o" +// CHECK-PCX86_64ELF-SAME: "{{[^"]*}}libclang_rt.builtins.a" +// CHECK-PCX86_64ELF-SAME: "-lc" +// CHECK-PCX86_64ELF-SAME: "-o" "a.out" + // Check that compiler-rt library without the arch filename suffix will // be used if present. // RUN: rm -rf %t.dir/baremetal_clang_rt_noarch >From 85e488288a1c70ad679c3a88f24fea0f821cc5d5 Mon Sep 17 00:00:00 2001 From: Mythreya <[email protected]> Date: Thu, 26 Feb 2026 02:44:26 -0800 Subject: [PATCH 4/4] cleanup --- clang/lib/Driver/ToolChains/BareMetal.cpp | 35 +++++++++++------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp index c4ef982ed3539..9005bd71e96b2 100644 --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -405,27 +405,26 @@ void BareMetal::AddClangSystemIncludeArgs(const ArgList &DriverArgs, if (DriverArgs.hasArg(options::OPT_nostdinc)) return; - if (DriverArgs.hasArg(options::OPT_nostdlibinc)) - return; - - const Driver &D = getDriver(); + if (!DriverArgs.hasArg(options::OPT_nostdlibinc)) { + const Driver &D = getDriver(); - if (std::optional<std::string> Path = getStdlibIncludePath()) - addSystemInclude(DriverArgs, CC1Args, *Path); + if (std::optional<std::string> Path = getStdlibIncludePath()) + addSystemInclude(DriverArgs, CC1Args, *Path); - const SmallString<128> SysRootDir(computeSysRoot()); - if (!SysRootDir.empty()) { - for (const Multilib &M : getOrderedMultilibs()) { + const SmallString<128> SysRootDir(computeSysRoot()); + if (!SysRootDir.empty()) { + for (const Multilib &M : getOrderedMultilibs()) { + SmallString<128> Dir(SysRootDir); + llvm::sys::path::append(Dir, M.includeSuffix()); + llvm::sys::path::append(Dir, "include"); + addSystemInclude(DriverArgs, CC1Args, Dir.str()); + } SmallString<128> Dir(SysRootDir); - llvm::sys::path::append(Dir, M.includeSuffix()); - llvm::sys::path::append(Dir, "include"); - addSystemInclude(DriverArgs, CC1Args, Dir.str()); - } - SmallString<128> Dir(SysRootDir); - llvm::sys::path::append(Dir, getTripleString()); - if (D.getVFS().exists(Dir)) { - llvm::sys::path::append(Dir, "include"); - addSystemInclude(DriverArgs, CC1Args, Dir.str()); + llvm::sys::path::append(Dir, getTripleString()); + if (D.getVFS().exists(Dir)) { + llvm::sys::path::append(Dir, "include"); + addSystemInclude(DriverArgs, CC1Args, Dir.str()); + } } } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
