diff --git a/0001-Mark-fopenmp-implicit-rpath-as-NoArgumentUnused.patch b/0001-Mark-fopenmp-implicit-rpath-as-NoArgumentUnused.patch deleted file mode 100644 index 87c9b93..0000000 --- a/0001-Mark-fopenmp-implicit-rpath-as-NoArgumentUnused.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 537e325f180d3d82bbef64aac71efcb0256d6916 Mon Sep 17 00:00:00 2001 -From: Nikita Popov -Date: Fri, 2 Sep 2022 16:30:15 +0200 -Subject: [PATCH] Mark fopenmp-implicit-rpath as NoArgumentUnused - -We pass this option unconditionally in LDFLAGS, make sure this -does not warn if openmp is not used, as this may break some -build systems. ---- - clang/include/clang/Driver/Options.td | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td -index d921ea5d5da9..d883fd3a8f04 100644 ---- a/clang/include/clang/Driver/Options.td -+++ b/clang/include/clang/Driver/Options.td -@@ -4118,7 +4118,8 @@ defm openmp_implicit_rpath: BoolFOption<"openmp-implicit-rpath", - LangOpts<"OpenMP">, - DefaultTrue, - PosFlag, -- NegFlag>; -+ NegFlag, -+ BothFlags<[NoArgumentUnused]>>; - def r : Flag<["-"], "r">, Flags<[LinkerInput,NoArgumentUnused]>, - Group; - def save_temps_EQ : Joined<["-", "--"], "save-temps=">, Flags<[CC1Option, FlangOption, NoXarchOption]>, --- -2.37.2 - diff --git a/0001-PATCH-clang-Reorganize-gtest-integration.patch b/0001-PATCH-clang-Reorganize-gtest-integration.patch index e854f01..c63aaf1 100644 --- a/0001-PATCH-clang-Reorganize-gtest-integration.patch +++ b/0001-PATCH-clang-Reorganize-gtest-integration.patch @@ -1,42 +1,42 @@ -From c6b921c8d833546946b70a8c2640032fd7c62461 Mon Sep 17 00:00:00 2001 +From cfd535d718631c1266baa628904ddfa95284427d Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Thu, 25 Feb 2021 14:04:52 +0100 -Subject: [PATCH 1/6] [PATCH][clang] Reorganize gtest integration +Subject: [PATCH] Reorganize gtest integration --- clang/CMakeLists.txt | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt -index 9e74014..0185276 100644 +index be59c199f05f..3f882f7aca59 100644 --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt -@@ -153,12 +153,6 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) +@@ -118,12 +118,6 @@ if(CLANG_BUILT_STANDALONE) set(LLVM_UTILS_PROVIDED ON) set(CLANG_TEST_DEPS FileCheck count not) endif() -- set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest) +- set(UNITTEST_DIR ${LLVM_THIRD_PARTY_DIR}/unittest) - if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h - AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX} - AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt) -- add_subdirectory(${UNITTEST_DIR} utils/unittest) +- add_subdirectory(${UNITTEST_DIR} third-party/unittest) - endif() - else() - # Seek installed Lit. - find_program(LLVM_LIT -@@ -537,7 +531,11 @@ endif() + endif() + + if(LLVM_LIT) +@@ -506,7 +500,11 @@ endif() if( CLANG_INCLUDE_TESTS ) -- if(EXISTS ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include/gtest/gtest.h) +- if(EXISTS ${LLVM_THIRD_PARTY_DIR}/unittest/googletest/include/gtest/gtest.h) + set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest) + if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h + AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX} + AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt) -+ add_subdirectory(${UNITTEST_DIR} utils/unittest) ++ add_subdirectory(${UNITTEST_DIR} third-party/unittest) add_subdirectory(unittests) list(APPEND CLANG_TEST_DEPS ClangUnitTests) list(APPEND CLANG_TEST_PARAMS -- -1.8.3.1 +2.39.1 diff --git a/0001-clang-Fix-interaction-between-asm-labels-and-inline-.patch b/0001-clang-Fix-interaction-between-asm-labels-and-inline-.patch deleted file mode 100644 index 948d164..0000000 --- a/0001-clang-Fix-interaction-between-asm-labels-and-inline-.patch +++ /dev/null @@ -1,74 +0,0 @@ -From bc9aa904bf9d24e7f39a2a866ff6b463858b6ccb Mon Sep 17 00:00:00 2001 -From: serge-sans-paille -Date: Wed, 21 Sep 2022 16:08:45 +0200 -Subject: [PATCH] [clang] Fix interaction between asm labels and inline - builtins - -One must pick the same name as the one referenced in CodeGenFunction when -generating .inline version of an inline builtin, otherwise they are not -correctly replaced. - -Differential Revision: https://reviews.llvm.org/D134362 ---- - clang/lib/CodeGen/CGExpr.cpp | 5 ++- - .../test/CodeGen/asm-label-inline-builtins.c | 32 +++++++++++++++++++ - 2 files changed, 36 insertions(+), 1 deletion(-) - create mode 100644 clang/test/CodeGen/asm-label-inline-builtins.c - -diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp -index bf3dd812b9e8..a951d53423bf 100644 ---- a/clang/lib/CodeGen/CGExpr.cpp -+++ b/clang/lib/CodeGen/CGExpr.cpp -@@ -5046,7 +5046,10 @@ static CGCallee EmitDirectCallee(CodeGenFunction &CGF, GlobalDecl GD) { - if (auto builtinID = FD->getBuiltinID()) { - std::string NoBuiltinFD = ("no-builtin-" + FD->getName()).str(); - std::string NoBuiltins = "no-builtins"; -- std::string FDInlineName = (FD->getName() + ".inline").str(); -+ -+ auto *A = FD->getAttr(); -+ StringRef Ident = A ? A->getLabel() : FD->getName(); -+ std::string FDInlineName = (Ident + ".inline").str(); - - bool IsPredefinedLibFunction = - CGF.getContext().BuiltinInfo.isPredefinedLibFunction(builtinID); -diff --git a/clang/test/CodeGen/asm-label-inline-builtins.c b/clang/test/CodeGen/asm-label-inline-builtins.c -new file mode 100644 -index 000000000000..ab9afc29411d ---- /dev/null -+++ b/clang/test/CodeGen/asm-label-inline-builtins.c -@@ -0,0 +1,32 @@ -+// RUN: %clang_cc1 -triple x86_64 -S -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s -+// -+// Verifies that clang-generated *.inline carry the same name at call and callee -+// site, in spite of asm labels. -+ -+typedef struct _IO_FILE FILE; -+extern FILE *stdout; -+extern int vprintf (const char *__restrict __format, __builtin_va_list __arg); -+extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, -+ const char *__restrict __format, __builtin_va_list __ap); -+extern int __vprintf_chk (int __flag, const char *__restrict __format, -+ __builtin_va_list __ap); -+ -+extern __typeof (vprintf) vprintf __asm ("__vprintfieee128"); -+extern __typeof (__vfprintf_chk) __vfprintf_chk __asm ("__vfprintf_chkieee128"); -+extern __typeof (__vprintf_chk) __vprintf_chk __asm ("__vprintf_chkieee128"); -+ -+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -+vprintf (const char *__restrict __fmt, __builtin_va_list __ap) -+{ -+ return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); -+} -+ -+void test(const char *fmt, __builtin_va_list ap) { -+ vprintf(fmt, ap); -+} -+ -+// CHECK-LABEL: void @test( -+// CHECK: call i32 @__vprintfieee128.inline( -+// -+// CHECK-LABEL: internal i32 @__vprintfieee128.inline( -+// CHECK: call i32 @__vfprintf_chkieee128( --- -2.37.2 - diff --git a/0001-clang-MinGW-Improve-extend-the-gcc-sysroot-detection.patch b/0001-clang-MinGW-Improve-extend-the-gcc-sysroot-detection.patch deleted file mode 100644 index 7f54d32..0000000 --- a/0001-clang-MinGW-Improve-extend-the-gcc-sysroot-detection.patch +++ /dev/null @@ -1,280 +0,0 @@ -From efe3686d4a519b357cecb5aaf715f1e1b6f2d025 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= -Date: Tue, 22 Nov 2022 14:38:54 +0200 -Subject: [PATCH 1/2] [clang] [MinGW] Improve/extend the gcc/sysroot detection - logic - -There are three functions that try to detect the right implicit -sysroot and libgcc directory setup to use -- One which looks for mingw sysroots located in - /../ -- One which looks for a mingw-targeting gcc executables in the PATH -- One which looks in the /lib/gcc directory to find the - right one to use, and the right specific triple used for arch - specific directories in the gcc/libstdc++ install - -These have mostly tried to look for executables named -"-w64-mingw32-gcc" or "mingw32-gcc" or subdirectories -named "-w64-mingw32" or "mingw32". - -In the case of findClangRelativeSysroot, it also has looked -for directories with the name of the actual triple. This -was added in deff7536278d355977171726124f83aa4bb95419, -with the intent of looking for a directory matching exactly -the user provided literal triple - however the triple here -is the normalized one, not the one provided by the user on -the command line. - -Improve and unify this logic somewhat: -- Always first look for things based on the literal triple - provided by the user. -- Secondly look for things based on the normalized triple - (which usually ends up as e.g. x86_64-w64-windows-gnu), - accessed via the Triple which is passed to the constructor -- Then look for the common triple form -w64-mingw32 - -The literal triple provided by the user is available via -Driver::getTargetTriple(), but computeTargetTriple() may -change e.g. the architecture of it, so we need to -reapply the effective architecture on the literal triple -spelling from Driver::getTargetTriple(). - -Do this consistently for all of findGcc, findClangRelativeSysroot -and findGccLibDir (while keeping the existing plain "mingw32" -cases in findGcc and findGccLibDir too). - -Fedora 37 started shipping mingw sysroots targeting UCRT, -in addition to the traditional msvcrt.dll, and these use -triples in the form -w64-mingw32ucrt - see -https://fedoraproject.org/wiki/Changes/F37MingwUCRT. - -Thus, in addition to the existing default tested triples, -try looking for triples in the form -w64-mingw32ucrt, -to automatically find the UCRT sysroots on Fedora 37. -By explicitly setting a specific target on the Clang command -line, the user can be more explicit with which flavour is -to be preferred. - -This should fix the main issue in -https://github.com/llvm/llvm-project/issues/59001. - -Differential Revision: https://reviews.llvm.org/D138692 ---- - clang/lib/Driver/ToolChains/MinGW.cpp | 68 ++++++++++++++----- - clang/lib/Driver/ToolChains/MinGW.h | 2 +- - .../12.2.1/include-fixed/.keep | 0 - .../sys-root/mingw/include/.keep | 0 - .../sys-root/mingw/include/c++/backward/.keep | 0 - .../include/c++/x86_64-w64-mingw32ucrt/.keep | 0 - clang/test/Driver/mingw-sysroot.cpp | 13 ++++ - clang/test/Driver/mingw.cpp | 4 ++ - 8 files changed, 68 insertions(+), 19 deletions(-) - create mode 100644 clang/test/Driver/Inputs/mingw_fedora_tree/usr/lib/gcc/x86_64-w64-mingw32ucrt/12.2.1/include-fixed/.keep - create mode 100644 clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/.keep - create mode 100644 clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward/.keep - create mode 100644 clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt/.keep - -diff --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp -index ae7c4c56bf9e..0ebacea6e87f 100644 ---- a/clang/lib/Driver/ToolChains/MinGW.cpp -+++ b/clang/lib/Driver/ToolChains/MinGW.cpp -@@ -359,13 +359,26 @@ static bool findGccVersion(StringRef LibDir, std::string &GccLibDir, - return Ver.size(); - } - --void toolchains::MinGW::findGccLibDir() { -- llvm::SmallVector, 2> SubdirNames; -+static llvm::Triple getLiteralTriple(const Driver &D, const llvm::Triple &T) { -+ llvm::Triple LiteralTriple(D.getTargetTriple()); -+ // The arch portion of the triple may be overridden by -m32/-m64. -+ LiteralTriple.setArchName(T.getArchName()); -+ return LiteralTriple; -+} -+ -+void toolchains::MinGW::findGccLibDir(const llvm::Triple &LiteralTriple) { -+ llvm::SmallVector, 5> SubdirNames; -+ SubdirNames.emplace_back(LiteralTriple.str()); -+ SubdirNames.emplace_back(getTriple().str()); - SubdirNames.emplace_back(getTriple().getArchName()); -- SubdirNames[0] += "-w64-mingw32"; -+ SubdirNames.back() += "-w64-mingw32"; -+ SubdirNames.emplace_back(getTriple().getArchName()); -+ SubdirNames.back() += "-w64-mingw32ucrt"; - SubdirNames.emplace_back("mingw32"); -- if (SubdirName.empty()) -- SubdirName = std::string(SubdirNames[0].str()); -+ if (SubdirName.empty()) { -+ SubdirName = getTriple().getArchName(); -+ SubdirName += "-w64-mingw32"; -+ } - // lib: Arch Linux, Ubuntu, Windows - // lib64: openSUSE Linux - for (StringRef CandidateLib : {"lib", "lib64"}) { -@@ -380,10 +393,17 @@ void toolchains::MinGW::findGccLibDir() { - } - } - --static llvm::ErrorOr findGcc(const llvm::Triple &T) { -- llvm::SmallVector, 2> Gccs; -+static llvm::ErrorOr findGcc(const llvm::Triple &LiteralTriple, -+ const llvm::Triple &T) { -+ llvm::SmallVector, 5> Gccs; -+ Gccs.emplace_back(LiteralTriple.str()); -+ Gccs.back() += "-gcc"; -+ Gccs.emplace_back(T.str()); -+ Gccs.back() += "-gcc"; - Gccs.emplace_back(T.getArchName()); -- Gccs[0] += "-w64-mingw32-gcc"; -+ Gccs.back() += "-w64-mingw32-gcc"; -+ Gccs.emplace_back(T.getArchName()); -+ Gccs.back() += "-w64-mingw32ucrt-gcc"; - Gccs.emplace_back("mingw32-gcc"); - // Please do not add "gcc" here - for (StringRef CandidateGcc : Gccs) -@@ -393,12 +413,15 @@ static llvm::ErrorOr findGcc(const llvm::Triple &T) { - } - - static llvm::ErrorOr --findClangRelativeSysroot(const Driver &D, const llvm::Triple &T, -- std::string &SubdirName) { -- llvm::SmallVector, 2> Subdirs; -+findClangRelativeSysroot(const Driver &D, const llvm::Triple &LiteralTriple, -+ const llvm::Triple &T, std::string &SubdirName) { -+ llvm::SmallVector, 4> Subdirs; -+ Subdirs.emplace_back(LiteralTriple.str()); - Subdirs.emplace_back(T.str()); - Subdirs.emplace_back(T.getArchName()); -- Subdirs[1] += "-w64-mingw32"; -+ Subdirs.back() += "-w64-mingw32"; -+ Subdirs.emplace_back(T.getArchName()); -+ Subdirs.back() += "-w64-mingw32ucrt"; - StringRef ClangRoot = llvm::sys::path::parent_path(D.getInstalledDir()); - StringRef Sep = llvm::sys::path::get_separator(); - for (StringRef CandidateSubdir : Subdirs) { -@@ -418,14 +441,16 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, - - // The sequence for detecting a sysroot here should be kept in sync with - // the testTriple function below. -+ llvm::Triple LiteralTriple = getLiteralTriple(D, getTriple()); - if (getDriver().SysRoot.size()) - Base = getDriver().SysRoot; - // Look for /../; if found, use /.. as the - // base as it could still be a base for a gcc setup with libgcc. -- else if (llvm::ErrorOr TargetSubdir = -- findClangRelativeSysroot(getDriver(), getTriple(), SubdirName)) -+ else if (llvm::ErrorOr TargetSubdir = findClangRelativeSysroot( -+ getDriver(), LiteralTriple, getTriple(), SubdirName)) - Base = std::string(llvm::sys::path::parent_path(TargetSubdir.get())); -- else if (llvm::ErrorOr GPPName = findGcc(getTriple())) -+ else if (llvm::ErrorOr GPPName = -+ findGcc(LiteralTriple, getTriple())) - Base = std::string(llvm::sys::path::parent_path( - llvm::sys::path::parent_path(GPPName.get()))); - else -@@ -433,7 +458,7 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, - llvm::sys::path::parent_path(getDriver().getInstalledDir())); - - Base += llvm::sys::path::get_separator(); -- findGccLibDir(); -+ findGccLibDir(LiteralTriple); - // GccLibDir must precede Base/lib so that the - // correct crtbegin.o ,cetend.o would be found. - getFilePaths().push_back(GccLibDir); -@@ -576,6 +601,12 @@ void toolchains::MinGW::printVerboseInfo(raw_ostream &OS) const { - // /usr/include/c++/4.8/backward - // /usr/x86_64-w64-mingw32/include - -+// Fedora -+// /usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt -+// /usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward -+// /usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include -+// /usr/lib/gcc/x86_64-w64-mingw32ucrt/12.2.1/include-fixed -+ - void toolchains::MinGW::AddClangSystemIncludeArgs(const ArgList &DriverArgs, - ArgStringList &CC1Args) const { - if (DriverArgs.hasArg(options::OPT_nostdinc)) -@@ -667,10 +698,11 @@ static bool testTriple(const Driver &D, const llvm::Triple &Triple, - std::string SubdirName; - if (D.SysRoot.size()) - return true; -+ llvm::Triple LiteralTriple = getLiteralTriple(D, Triple); - if (llvm::ErrorOr TargetSubdir = -- findClangRelativeSysroot(D, Triple, SubdirName)) -+ findClangRelativeSysroot(D, LiteralTriple, Triple, SubdirName)) - return true; -- if (llvm::ErrorOr GPPName = findGcc(Triple)) -+ if (llvm::ErrorOr GPPName = findGcc(LiteralTriple, Triple)) - return true; - // If we neither found a colocated sysroot or a matching gcc executable, - // conclude that we can't know if this is the correct spelling of the triple. -diff --git a/clang/lib/Driver/ToolChains/MinGW.h b/clang/lib/Driver/ToolChains/MinGW.h -index f15f99dc8a8c..bc17d273e776 100644 ---- a/clang/lib/Driver/ToolChains/MinGW.h -+++ b/clang/lib/Driver/ToolChains/MinGW.h -@@ -108,7 +108,7 @@ private: - std::string SubdirName; - mutable std::unique_ptr Preprocessor; - mutable std::unique_ptr Compiler; -- void findGccLibDir(); -+ void findGccLibDir(const llvm::Triple &LiteralTriple); - - bool NativeLLVMSupport; - }; -diff --git a/clang/test/Driver/Inputs/mingw_fedora_tree/usr/lib/gcc/x86_64-w64-mingw32ucrt/12.2.1/include-fixed/.keep b/clang/test/Driver/Inputs/mingw_fedora_tree/usr/lib/gcc/x86_64-w64-mingw32ucrt/12.2.1/include-fixed/.keep -new file mode 100644 -index 000000000000..e69de29bb2d1 -diff --git a/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/.keep b/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/.keep -new file mode 100644 -index 000000000000..e69de29bb2d1 -diff --git a/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward/.keep b/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward/.keep -new file mode 100644 -index 000000000000..e69de29bb2d1 -diff --git a/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt/.keep b/clang/test/Driver/Inputs/mingw_fedora_tree/usr/x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt/.keep -new file mode 100644 -index 000000000000..e69de29bb2d1 -diff --git a/clang/test/Driver/mingw-sysroot.cpp b/clang/test/Driver/mingw-sysroot.cpp -index 1cb51b3aea2d..985be9e5f2ac 100644 ---- a/clang/test/Driver/mingw-sysroot.cpp -+++ b/clang/test/Driver/mingw-sysroot.cpp -@@ -14,6 +14,11 @@ - // RUN: ln -s %S/Inputs/mingw_ubuntu_posix_tree/usr/x86_64-w64-mingw32 %T/testroot-clang/x86_64-w64-mingw32 - // RUN: ln -s %S/Inputs/mingw_arch_tree/usr/i686-w64-mingw32 %T/testroot-clang/i686-w64-mingw32 - -+// RUN: rm -rf %T/testroot-custom-triple -+// RUN: mkdir -p %T/testroot-custom-triple/bin -+// RUN: ln -s %clang %T/testroot-custom-triple/bin/x86_64-w64-mingw32foo-clang -+// RUN: ln -s %clang %T/testroot-custom-triple/bin/clang -+// RUN: ln -s %S/Inputs/mingw_ubuntu_posix_tree/usr/x86_64-w64-mingw32 %T/testroot-custom-triple/x86_64-w64-mingw32foo - - // If we find a gcc in the path with the right triplet prefix, pick that as - // sysroot: -@@ -51,3 +56,11 @@ - - // RUN: env "PATH=%T/testroot-gcc/bin:%PATH%" %T/testroot-clang/bin/x86_64-w64-mingw32-clang --target=x86_64-w64-mingw32 -m32 -rtlib=compiler-rt -stdlib=libstdc++ --sysroot="" -c -### %s 2>&1 | FileCheck -check-prefix=CHECK_TESTROOT_CLANG_I686 %s - // CHECK_TESTROOT_CLANG_I686: "{{[^"]+}}/testroot-clang{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include" -+ -+ -+// If the user calls clang with a custom literal triple, make sure this maps -+// to sysroots with the matching spelling. -+ -+// RUN: %T/testroot-custom-triple/bin/x86_64-w64-mingw32foo-clang -rtlib=compiler-rt -stdlib=libstdc++ --sysroot="" -c -### %s 2>&1 | FileCheck -check-prefix=CHECK_TESTROOT_CUSTOM_TRIPLE %s -+// RUN: %T/testroot-custom-triple/bin/clang --target=x86_64-w64-mingw32foo -rtlib=compiler-rt -stdlib=libstdc++ --sysroot="" -c -### %s 2>&1 | FileCheck -check-prefix=CHECK_TESTROOT_CUSTOM_TRIPLE %s -+// CHECK_TESTROOT_CUSTOM_TRIPLE: "{{[^"]+}}/testroot-custom-triple{{/|\\\\}}x86_64-w64-mingw32foo{{/|\\\\}}include" -diff --git a/clang/test/Driver/mingw.cpp b/clang/test/Driver/mingw.cpp -index b37503e475d8..bde952fb3565 100644 ---- a/clang/test/Driver/mingw.cpp -+++ b/clang/test/Driver/mingw.cpp -@@ -39,6 +39,10 @@ - // CHECK_MINGW_OPENSUSE_TREE: "[[BASE]]/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}x86_64-w64-mingw32/sys-root/mingw/include" - - -+// RUN: %clang -target x86_64-pc-windows-gnu -rtlib=platform -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_fedora_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_FEDORA_TREE %s -+// CHECK_MINGW_FEDORA_TREE: "[[BASE:[^"]+]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include" -+ -+ - // RUN: %clang -target i686-pc-windows-gnu -rtlib=platform -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_arch_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_ARCH_TREE %s - // CHECK_MINGW_ARCH_TREE: "[[BASE:[^"]+]]/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0" - // CHECK_MINGW_ARCH_TREE: "[[BASE]]/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0{{/|\\\\}}i686-w64-mingw32" --- -2.38.1 - diff --git a/0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch b/0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch index 8f30ef4..a0b8cb0 100644 --- a/0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch +++ b/0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch @@ -58,13 +58,16 @@ diff --git a/clang-tools-extra/test/lit.cfg.py b/clang-tools-extra/test/lit.cfg. index 9b99bfd93440..3fca9f25fb48 100644 --- a/clang-tools-extra/test/lit.cfg.py +++ b/clang-tools-extra/test/lit.cfg.py -@@ -59,3 +59,6 @@ config.substitutions.append( +@@ -59,6 +59,9 @@ config.substitutions.append( # Plugins (loadable modules) if config.has_plugins and config.llvm_plugin_ext: config.available_features.add('plugins') + +if config.has_llvm_hello: + config.available_features.add("llvm-hello") + + # It is not realistically possible to account for all options that could + # possibly be present in system and user configuration files, so disable diff --git a/clang-tools-extra/test/lit.site.cfg.py.in b/clang-tools-extra/test/lit.site.cfg.py.in index 4eb830a1baf1..6e5559348454 100644 --- a/clang-tools-extra/test/lit.site.cfg.py.in diff --git a/0002-clang-MinGW-Improve-detection-of-libstdc-headers-on-.patch b/0002-clang-MinGW-Improve-detection-of-libstdc-headers-on-.patch deleted file mode 100644 index 7376d7f..0000000 --- a/0002-clang-MinGW-Improve-detection-of-libstdc-headers-on-.patch +++ /dev/null @@ -1,139 +0,0 @@ -From d3b79c2950d590cb272648f1c6a9dd7646f57beb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= -Date: Tue, 22 Nov 2022 14:39:39 +0200 -Subject: [PATCH 2/2] [clang] [MinGW] Improve detection of libstdc++ headers on - Fedora - -There's some variation in where different toolchain distributions -(and linux distributions) package the mingw sysroots - this is -so far handled by adding specific known subdirectory paths -to the include and lib directory lists. - -There are multiple degrees of combinatorics involved here though; -the distros may use different locations such as -/usr/x86_64-w64-mingw32/include or -/usr/x86_64-w64-mingw32/sys-root/mingw/include. - -So far, this setup has been treated as base=/usr, subdir=x86_64-w64-mingw32, -and the driver tries to add further subdirectories such as -//include, //sys-root/mingw/include. - -When it comes to libstdc++ (and libc++), each of these come with -a large number of potential subdirectories. Instead of further -exploding the combinatorics another step by adding all combinations -of all paths, check whether //sys-root/mingw/include -exists, and if it does, append that subpath into the subdir variable. - -This allows finding libstdc++ headers in e.g. -/usr/x86_64-w64-mingw32/sys-root/mingw/include/c++/x86_64-w64-mingw32 -on Fedora. - -The same logic (where everything belonging to this target fits -under one expanded path, with just /include and /lib -under it) doesn't seem to apply on Gentoo, where the includes -are found in //usr/include while the libraries -are in //mingw/lib (see -8e218026f8d5eabfdef9141ae5e26aa91d1933e6). But apparently -the libstdc++ headers aren't installed under -//usr/include, so that path hierarchy quirk doesn't -need to be taken into account in AddClangCXXStdlibIncludeArgs. - -Differential Revision: https://reviews.llvm.org/D138693 ---- - clang/lib/Driver/ToolChains/MinGW.cpp | 19 +++++++++---------- - clang/lib/Driver/ToolChains/MinGW.h | 1 + - clang/test/Driver/mingw.cpp | 5 ++++- - 3 files changed, 14 insertions(+), 11 deletions(-) - -diff --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp -index 0ebacea6e87f..2a9bf4b18f19 100644 ---- a/clang/lib/Driver/ToolChains/MinGW.cpp -+++ b/clang/lib/Driver/ToolChains/MinGW.cpp -@@ -376,7 +376,7 @@ void toolchains::MinGW::findGccLibDir(const llvm::Triple &LiteralTriple) { - SubdirNames.back() += "-w64-mingw32ucrt"; - SubdirNames.emplace_back("mingw32"); - if (SubdirName.empty()) { -- SubdirName = getTriple().getArchName(); -+ SubdirName = getTriple().getArchName().str(); - SubdirName += "-w64-mingw32"; - } - // lib: Arch Linux, Ubuntu, Windows -@@ -459,9 +459,16 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, - - Base += llvm::sys::path::get_separator(); - findGccLibDir(LiteralTriple); -+ TripleDirName = SubdirName; - // GccLibDir must precede Base/lib so that the - // correct crtbegin.o ,cetend.o would be found. - getFilePaths().push_back(GccLibDir); -+ -+ // openSUSE/Fedora -+ std::string CandidateSubdir = SubdirName + "/sys-root/mingw"; -+ if (getDriver().getVFS().exists(Base + CandidateSubdir)) -+ SubdirName = CandidateSubdir; -+ - getFilePaths().push_back( - (Base + SubdirName + llvm::sys::path::get_separator() + "lib").str()); - -@@ -470,8 +477,6 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple, - (Base + SubdirName + llvm::sys::path::get_separator() + "mingw/lib").str()); - - getFilePaths().push_back(Base + "lib"); -- // openSUSE -- getFilePaths().push_back(Base + SubdirName + "/sys-root/mingw/lib"); - - NativeLLVMSupport = - Args.getLastArgValue(options::OPT_fuse_ld_EQ, CLANG_DEFAULT_LINKER) -@@ -621,12 +626,6 @@ void toolchains::MinGW::AddClangSystemIncludeArgs(const ArgList &DriverArgs, - if (DriverArgs.hasArg(options::OPT_nostdlibinc)) - return; - -- if (GetRuntimeLibType(DriverArgs) == ToolChain::RLT_Libgcc) { -- // openSUSE -- addSystemInclude(DriverArgs, CC1Args, -- Base + SubdirName + "/sys-root/mingw/include"); -- } -- - addSystemInclude(DriverArgs, CC1Args, - Base + SubdirName + llvm::sys::path::get_separator() + - "include"); -@@ -684,7 +683,7 @@ void toolchains::MinGW::AddClangCXXStdlibIncludeArgs( - for (auto &CppIncludeBase : CppIncludeBases) { - addSystemInclude(DriverArgs, CC1Args, CppIncludeBase); - CppIncludeBase += Slash; -- addSystemInclude(DriverArgs, CC1Args, CppIncludeBase + SubdirName); -+ addSystemInclude(DriverArgs, CC1Args, CppIncludeBase + TripleDirName); - addSystemInclude(DriverArgs, CC1Args, CppIncludeBase + "backward"); - } - break; -diff --git a/clang/lib/Driver/ToolChains/MinGW.h b/clang/lib/Driver/ToolChains/MinGW.h -index bc17d273e776..ef9bfb29e175 100644 ---- a/clang/lib/Driver/ToolChains/MinGW.h -+++ b/clang/lib/Driver/ToolChains/MinGW.h -@@ -106,6 +106,7 @@ private: - clang::driver::toolchains::Generic_GCC::GCCVersion GccVer; - std::string Ver; - std::string SubdirName; -+ std::string TripleDirName; - mutable std::unique_ptr Preprocessor; - mutable std::unique_ptr Compiler; - void findGccLibDir(const llvm::Triple &LiteralTriple); -diff --git a/clang/test/Driver/mingw.cpp b/clang/test/Driver/mingw.cpp -index bde952fb3565..46ea55b9500d 100644 ---- a/clang/test/Driver/mingw.cpp -+++ b/clang/test/Driver/mingw.cpp -@@ -40,7 +40,10 @@ - - - // RUN: %clang -target x86_64-pc-windows-gnu -rtlib=platform -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_fedora_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_FEDORA_TREE %s --// CHECK_MINGW_FEDORA_TREE: "[[BASE:[^"]+]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include" -+// CHECK_MINGW_FEDORA_TREE: "[[BASE:[^"]+]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++" -+// CHECK_MINGW_FEDORA_TREE: "[[BASE]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/x86_64-w64-mingw32ucrt" -+// CHECK_MINGW_FEDORA_TREE: "[[BASE]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include/c++/backward" -+// CHECK_MINGW_FEDORA_TREE: "[[BASE]]/Inputs/mingw_fedora_tree/usr{{/|\\\\}}x86_64-w64-mingw32ucrt/sys-root/mingw/include" - - - // RUN: %clang -target i686-pc-windows-gnu -rtlib=platform -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_arch_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_ARCH_TREE %s --- -2.38.1 - diff --git a/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch b/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch index e6671f9..ce920f9 100644 --- a/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch +++ b/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch @@ -1,18 +1,17 @@ -From c87abee7356b8fde81512ffceadd520776c465d2 Mon Sep 17 00:00:00 2001 +From d95d3fbff661c0390072ed0bb4544d5e2aae5c9a Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Thu, 25 Feb 2021 14:09:29 +0100 -Subject: [PATCH] [PATCH][clang] Make -funwind-tables the default on all archs +Subject: [PATCH] Make -funwind-tables the default on all archs --- - clang/lib/Driver/ToolChains/Gnu.cpp | 6 ++++++ - 1 file changed, 6 insertions(+) + clang/lib/Driver/ToolChains/Gnu.cpp | 5 +++++ + 1 file changed, 5 insertions(+) -diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp -b/clang/lib/Driver/ToolChains/Gnu.cpp -index d0808d061c82..de9c9743cd38 100644 +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +index c8006f3d8412..6ed03adb7702 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp -@@ -2701,6 +2701,11 @@ bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const { +@@ -2863,6 +2863,11 @@ Generic_GCC::getDefaultUnwindTableLevel(const ArgList &Args) const { case llvm::Triple::ppc64le: case llvm::Triple::x86: case llvm::Triple::x86_64: @@ -21,9 +20,9 @@ index d0808d061c82..de9c9743cd38 100644 + // rhbz#1655546 + case llvm::Triple::systemz: + case llvm::Triple::arm: - return true; + return UnwindTableLevel::Asynchronous; default: - return false; + return UnwindTableLevel::None; -- -2.27.0 +2.39.1 diff --git a/0010-PATCH-clang-Produce-DWARF4-by-default.patch b/0010-PATCH-clang-Produce-DWARF4-by-default.patch deleted file mode 100644 index 2d698c5..0000000 --- a/0010-PATCH-clang-Produce-DWARF4-by-default.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 1f68d73910ddee1beaf3582480b8a9738c941a43 Mon Sep 17 00:00:00 2001 -From: Konrad Kleine -Date: Thu, 24 Mar 2022 09:44:21 +0100 -Subject: [PATCH] Produce DWARF4 by default - -Have a look at the following commit to see when the move from DWARF 4 to 5 first happened upstream: - -https://github.com/llvm/llvm-project/commit/d3b26dea16108c427b19b5480c9edc76edf8f5b4?diff=unified ---- - clang/include/clang/Driver/ToolChain.h | 2 +- - clang/test/CodeGen/dwarf-version.c | 4 ++-- - clang/test/Driver/cl-options.c | 2 +- - clang/test/Driver/clang-g-opts.c | 2 +- - clang/test/Driver/ve-toolchain.c | 2 +- - clang/test/Driver/ve-toolchain.cpp | 2 +- - 6 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h -index f20ab164531b..53c86ee82936 100644 ---- a/clang/include/clang/Driver/ToolChain.h -+++ b/clang/include/clang/Driver/ToolChain.h -@@ -535,7 +535,7 @@ public: - - // Return the DWARF version to emit, in the absence of arguments - // to the contrary. -- virtual unsigned GetDefaultDwarfVersion() const { return 5; } -+ virtual unsigned GetDefaultDwarfVersion() const { return 4; } - - // Some toolchains may have different restrictions on the DWARF version and - // may need to adjust it. E.g. NVPTX may need to enforce DWARF2 even when host -diff --git a/clang/test/CodeGen/dwarf-version.c b/clang/test/CodeGen/dwarf-version.c -index 0a6fa4768026..96f01749d0d8 100644 ---- a/clang/test/CodeGen/dwarf-version.c -+++ b/clang/test/CodeGen/dwarf-version.c -@@ -2,8 +2,8 @@ - // RUN: %clang -target x86_64-linux-gnu -gdwarf-3 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER3 - // RUN: %clang -target x86_64-linux-gnu -gdwarf-4 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4 - // RUN: %clang -target x86_64-linux-gnu -gdwarf-5 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5 --// RUN: %clang -target x86_64-linux-gnu -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5 --// RUN: %clang -target x86_64-linux-gnu -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5 -+// RUN: %clang -target x86_64-linux-gnu -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4 -+// RUN: %clang -target x86_64-linux-gnu -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4 - - // The -isysroot is used as a hack to avoid LIT messing with the SDKROOT - // environment variable which indirecty overrides the version in the target -diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c -index a2e350a0a835..01889ba0bf9b 100644 ---- a/clang/test/Driver/cl-options.c -+++ b/clang/test/Driver/cl-options.c -@@ -570,7 +570,7 @@ - // RUN: %clang_cl /Z7 -gdwarf /c -### -- %s 2>&1 | FileCheck -check-prefix=Z7_gdwarf %s - // Z7_gdwarf: "-gcodeview" - // Z7_gdwarf: "-debug-info-kind=constructor" --// Z7_gdwarf: "-dwarf-version= -+// Z7_gdwarf: "-dwarf-version=4 - - // RUN: %clang_cl -fmsc-version=1800 -TP -### -- %s 2>&1 | FileCheck -check-prefix=CXX11 %s - // CXX11: -std=c++11 -diff --git a/clang/test/Driver/clang-g-opts.c b/clang/test/Driver/clang-g-opts.c -index d982b1070cae..bb129e75769c 100644 ---- a/clang/test/Driver/clang-g-opts.c -+++ b/clang/test/Driver/clang-g-opts.c -@@ -32,7 +32,7 @@ - - // CHECK-WITHOUT-G-NOT: -debug-info-kind - // CHECK-WITH-G: "-debug-info-kind=constructor" --// CHECK-WITH-G: "-dwarf-version=5" -+// CHECK-WITH-G: "-dwarf-version=4" - // CHECK-WITH-G-DWARF2: "-dwarf-version=2" - - // CHECK-WITH-G-STANDALONE: "-debug-info-kind=standalone" -diff --git a/clang/test/Driver/ve-toolchain.c b/clang/test/Driver/ve-toolchain.c -index 32e25769b6da..b8a2852daba8 100644 ---- a/clang/test/Driver/ve-toolchain.c -+++ b/clang/test/Driver/ve-toolchain.c -@@ -6,7 +6,7 @@ - /// Checking dwarf-version - - // RUN: %clang -### -g --target=ve %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s --// DWARF_VER: "-dwarf-version=5" -+// DWARF_VER: "-dwarf-version=4" - - ///----------------------------------------------------------------------------- - /// Checking include-path -diff --git a/clang/test/Driver/ve-toolchain.cpp b/clang/test/Driver/ve-toolchain.cpp -index 5a33d5eceb61..cedf895b36dc 100644 ---- a/clang/test/Driver/ve-toolchain.cpp -+++ b/clang/test/Driver/ve-toolchain.cpp -@@ -7,7 +7,7 @@ - - // RUN: %clangxx -### -g --target=ve-unknown-linux-gnu \ - // RUN: %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s --// DWARF_VER: "-dwarf-version=5" -+// DWARF_VER: "-dwarf-version=4" - - ///----------------------------------------------------------------------------- - /// Checking include-path --- -2.37.1 - diff --git a/clang.spec b/clang.spec index 3b10edf..d4a52b2 100644 --- a/clang.spec +++ b/clang.spec @@ -7,10 +7,10 @@ %bcond_with compat_build %bcond_without check -%global maj_ver 15 +%global maj_ver 16 %global min_ver 0 -%global patch_ver 7 -#global rc_ver 3 +%global patch_ver 0 +%global rc_ver 1 %global clang_version %{maj_ver}.%{min_ver}.%{patch_ver} %if %{with compat_build} @@ -62,19 +62,8 @@ Patch0: 0001-PATCH-clang-Reorganize-gtest-integration.patch Patch1: 0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch Patch2: 0003-PATCH-clang-Don-t-install-static-libraries.patch Patch3: 0001-Driver-Add-a-gcc-equivalent-triple-to-the-list-of-tr.patch -Patch5: 0010-PATCH-clang-Produce-DWARF4-by-default.patch Patch6: 0001-Take-into-account-Fedora-Specific-install-dir-for-li.patch -# TODO: Can be dropped in LLVM 16: https://reviews.llvm.org/D133316 -Patch7: 0001-Mark-fopenmp-implicit-rpath-as-NoArgumentUnused.patch - -# TODO: Can be dropped in LLVM 16: https://reviews.llvm.org/D134362 -Patch8: 0001-clang-Fix-interaction-between-asm-labels-and-inline-.patch - -# TODO: Can be dropped in LLVM 16. -Patch9: 0001-clang-MinGW-Improve-extend-the-gcc-sysroot-detection.patch -Patch10: 0002-clang-MinGW-Improve-detection-of-libstdc-headers-on-.patch - %if %{without compat_build} # Patches for clang-tools-extra # See https://reviews.llvm.org/D120301