Index: llvm-toolchain-9-9~+rc3/clang/lib/Driver/ToolChains/Linux.cpp =================================================================== --- llvm-toolchain-9-9~+rc3.orig/clang/lib/Driver/ToolChains/Linux.cpp +++ llvm-toolchain-9-9~+rc3/clang/lib/Driver/ToolChains/Linux.cpp @@ -12,6 +12,7 @@ #include "Arch/PPC.h" #include "Arch/RISCV.h" #include "CommonArgs.h" +#include "clang/Basic/Version.h" #include "clang/Config/config.h" #include "clang/Driver/Distro.h" #include "clang/Driver/Driver.h" @@ -665,7 +666,16 @@ void Linux::AddClangSystemIncludeArgs(co if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { SmallString<128> P(D.ResourceDir); llvm::sys::path::append(P, "include"); - addSystemInclude(DriverArgs, CC1Args, P); + if (llvm::sys::fs::exists(P)) { + /* Include the build include directory only + * Otherwise, it fails with stage2 when clang headers are available on the system + * they usually fail because of the include_next. Two llvm/clang headers are found + * while we are waiting for the lib C++ (std or not) + */ + addSystemInclude(DriverArgs, CC1Args, P); + } else { + addSystemInclude(DriverArgs, CC1Args, "/usr/include/clang/" + std::string(CLANG_VERSION_STRING) + "/include/"); + } } if (DriverArgs.hasArg(options::OPT_nostdlibinc))