From 52a260f4a9e961424a92fcb30c1c604b4232730c Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 18:13:10 +0100 Subject: [PATCH 01/22] new package: llvm11-11.0.0 --- common/shlibs | 8 +- srcpkgs/clang | 2 +- srcpkgs/clang-analyzer | 2 +- srcpkgs/clang-tools-extra | 2 +- srcpkgs/libclang | 2 +- srcpkgs/libclang-cpp | 2 +- srcpkgs/libllvm11 | 1 + srcpkgs/lld | 2 +- srcpkgs/lld-devel | 2 +- srcpkgs/lldb | 2 +- srcpkgs/lldb-devel | 2 +- .../llvm11/files/llvm-Config-llvm-config.h | 9 + ...clang-001-fix-unwind-chain-inclusion.patch | 44 +++ .../clang/clang-002-add-musl-triples.patch | 91 +++++ .../clang-003-ppc64-dynamic-linker-path.patch | 18 + .../clang/clang-004-ppc64-musl-elfv2.patch | 30 ++ .../compiler-rt/compiler-rt-armv5.patch | 11 + srcpkgs/llvm11/files/patches/lldb/musl.patch | 31 ++ .../files/patches/llvm/llvm-001-musl.patch | 58 ++++ .../llvm/llvm-002-musl-ppc64-elfv2.patch | 26 ++ .../patches/llvm/llvm-003-ppc-secureplt.patch | 11 + ...h~b2110e270 (codelite: rebuild for llvm11) | 11 + .../patches/llvm/llvm-004-override-opt.patch | 18 + .../patches/llvm/llvm-005-ppc-bigpic.patch | 38 +++ .../llvm/llvm-006-aarch64-mf_exec.patch | 25 ++ srcpkgs/llvm11/template | 310 ++++++++++++++++++ srcpkgs/llvm11/update | 2 + 27 files changed, 747 insertions(+), 13 deletions(-) create mode 120000 srcpkgs/libllvm11 create mode 100644 srcpkgs/llvm11/files/llvm-Config-llvm-config.h create mode 100644 srcpkgs/llvm11/files/patches/clang/clang-001-fix-unwind-chain-inclusion.patch create mode 100644 srcpkgs/llvm11/files/patches/clang/clang-002-add-musl-triples.patch create mode 100644 srcpkgs/llvm11/files/patches/clang/clang-003-ppc64-dynamic-linker-path.patch create mode 100644 srcpkgs/llvm11/files/patches/clang/clang-004-ppc64-musl-elfv2.patch create mode 100644 srcpkgs/llvm11/files/patches/compiler-rt/compiler-rt-armv5.patch create mode 100644 srcpkgs/llvm11/files/patches/lldb/musl.patch create mode 100644 srcpkgs/llvm11/files/patches/llvm/llvm-001-musl.patch create mode 100644 srcpkgs/llvm11/files/patches/llvm/llvm-002-musl-ppc64-elfv2.patch create mode 100644 srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch create mode 100644 srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch~b2110e270 (codelite: rebuild for llvm11) create mode 100644 srcpkgs/llvm11/files/patches/llvm/llvm-004-override-opt.patch create mode 100644 srcpkgs/llvm11/files/patches/llvm/llvm-005-ppc-bigpic.patch create mode 100644 srcpkgs/llvm11/files/patches/llvm/llvm-006-aarch64-mf_exec.patch create mode 100644 srcpkgs/llvm11/template create mode 100644 srcpkgs/llvm11/update diff --git a/common/shlibs b/common/shlibs index 12ade7a11ac..ef2400dd2ef 100644 --- a/common/shlibs +++ b/common/shlibs @@ -1028,10 +1028,10 @@ libuchardet.so.0 uchardet-0.0.6_1 libgtksourceviewmm-3.0.so.0 gtksourceviewmm-3.2.0_1 libyajl.so.2 yajl-2.0.1_1 libconfuse.so.2 confuse-3.2.1_1 -liblldb.so.10 lldb-10.0.0_1 -libclang.so.10 libclang-10.0.0_3 -libclang-cpp.so.10 libclang-cpp-10.0.0_3 -libLLVM-10.so libllvm10-10.0.0_1 +liblldb.so.11 lldb-11.0.0_1 +libclang.so.11 libclang-11.0.0_1 +libclang-cpp.so.11 libclang-cpp-11.0.0_1 +libLLVM-11.so libllvm11-11.0.0_1 libisofs.so.6 libisofs-0.6.24_1 libmpack.so.0 libmpack-1.0.5_1 libGeoIP.so.1 libgeoip-1.4.8_1 diff --git a/srcpkgs/clang b/srcpkgs/clang index 59f26575cb3..decc3806c95 120000 --- a/srcpkgs/clang +++ b/srcpkgs/clang @@ -1 +1 @@ -llvm10 \ No newline at end of file +llvm11 \ No newline at end of file diff --git a/srcpkgs/clang-analyzer b/srcpkgs/clang-analyzer index 59f26575cb3..decc3806c95 120000 --- a/srcpkgs/clang-analyzer +++ b/srcpkgs/clang-analyzer @@ -1 +1 @@ -llvm10 \ No newline at end of file +llvm11 \ No newline at end of file diff --git a/srcpkgs/clang-tools-extra b/srcpkgs/clang-tools-extra index 59f26575cb3..decc3806c95 120000 --- a/srcpkgs/clang-tools-extra +++ b/srcpkgs/clang-tools-extra @@ -1 +1 @@ -llvm10 \ No newline at end of file +llvm11 \ No newline at end of file diff --git a/srcpkgs/libclang b/srcpkgs/libclang index 59f26575cb3..decc3806c95 120000 --- a/srcpkgs/libclang +++ b/srcpkgs/libclang @@ -1 +1 @@ -llvm10 \ No newline at end of file +llvm11 \ No newline at end of file diff --git a/srcpkgs/libclang-cpp b/srcpkgs/libclang-cpp index 59f26575cb3..decc3806c95 120000 --- a/srcpkgs/libclang-cpp +++ b/srcpkgs/libclang-cpp @@ -1 +1 @@ -llvm10 \ No newline at end of file +llvm11 \ No newline at end of file diff --git a/srcpkgs/libllvm11 b/srcpkgs/libllvm11 new file mode 120000 index 00000000000..decc3806c95 --- /dev/null +++ b/srcpkgs/libllvm11 @@ -0,0 +1 @@ +llvm11 \ No newline at end of file diff --git a/srcpkgs/lld b/srcpkgs/lld index 59f26575cb3..decc3806c95 120000 --- a/srcpkgs/lld +++ b/srcpkgs/lld @@ -1 +1 @@ -llvm10 \ No newline at end of file +llvm11 \ No newline at end of file diff --git a/srcpkgs/lld-devel b/srcpkgs/lld-devel index 59f26575cb3..decc3806c95 120000 --- a/srcpkgs/lld-devel +++ b/srcpkgs/lld-devel @@ -1 +1 @@ -llvm10 \ No newline at end of file +llvm11 \ No newline at end of file diff --git a/srcpkgs/lldb b/srcpkgs/lldb index 59f26575cb3..decc3806c95 120000 --- a/srcpkgs/lldb +++ b/srcpkgs/lldb @@ -1 +1 @@ -llvm10 \ No newline at end of file +llvm11 \ No newline at end of file diff --git a/srcpkgs/lldb-devel b/srcpkgs/lldb-devel index 59f26575cb3..decc3806c95 120000 --- a/srcpkgs/lldb-devel +++ b/srcpkgs/lldb-devel @@ -1 +1 @@ -llvm10 \ No newline at end of file +llvm11 \ No newline at end of file diff --git a/srcpkgs/llvm11/files/llvm-Config-llvm-config.h b/srcpkgs/llvm11/files/llvm-Config-llvm-config.h new file mode 100644 index 00000000000..2fa08c9be69 --- /dev/null +++ b/srcpkgs/llvm11/files/llvm-Config-llvm-config.h @@ -0,0 +1,9 @@ +#include + +#if __WORDSIZE == 32 +#include "llvm-config-32.h" +#elif __WORDSIZE == 64 +#include "llvm-config-64.h" +#else +#error "Unknown word size" +#endif diff --git a/srcpkgs/llvm11/files/patches/clang/clang-001-fix-unwind-chain-inclusion.patch b/srcpkgs/llvm11/files/patches/clang/clang-001-fix-unwind-chain-inclusion.patch new file mode 100644 index 00000000000..04244bcc274 --- /dev/null +++ b/srcpkgs/llvm11/files/patches/clang/clang-001-fix-unwind-chain-inclusion.patch @@ -0,0 +1,44 @@ +From 352974169f0d2b5da3d5321f588f5e3b5941330e Mon Sep 17 00:00:00 2001 +From: Andrea Brancaleoni +Date: Tue, 8 Sep 2015 22:14:57 +0200 +Subject: [PATCH 2/7] fix unwind chain inclusion + +--- + lib/Headers/unwind.h | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/lib/Headers/unwind.h b/lib/Headers/unwind.h +index 303d792..44e10cc 100644 +--- a/lib/Headers/unwind.h ++++ b/lib/Headers/unwind.h +@@ -9,9 +9,6 @@ + + /* See "Data Definitions for libgcc_s" in the Linux Standard Base.*/ + +-#ifndef __CLANG_UNWIND_H +-#define __CLANG_UNWIND_H +- + #if defined(__APPLE__) && __has_include_next() + /* Darwin (from 11.x on) provide an unwind.h. If that's available, + * use it. libunwind wraps some of its definitions in #ifdef _GNU_SOURCE, +@@ -39,6 +36,9 @@ + # endif + #else + ++#ifndef __CLANG_UNWIND_H ++#define __CLANG_UNWIND_H ++ + #include + + #ifdef __cplusplus +@@ -322,6 +322,7 @@ _Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *); + } + #endif + ++#endif /* __CLANG_UNWIND_H */ ++ + #endif + +-#endif /* __CLANG_UNWIND_H */ +-- +2.5.1 diff --git a/srcpkgs/llvm11/files/patches/clang/clang-002-add-musl-triples.patch b/srcpkgs/llvm11/files/patches/clang/clang-002-add-musl-triples.patch new file mode 100644 index 00000000000..aefc88d48f5 --- /dev/null +++ b/srcpkgs/llvm11/files/patches/clang/clang-002-add-musl-triples.patch @@ -0,0 +1,91 @@ +--- a/lib/Driver/ToolChains/Gnu.cpp ++++ b/lib/Driver/ToolChains/Gnu.cpp +@@ -1938,7 +1938,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf", + "armv7hl-redhat-linux-gnueabi", + "armv6hl-suse-linux-gnueabi", +- "armv7hl-suse-linux-gnueabi"}; ++ "armv7hl-suse-linux-gnueabi", ++ "armv7l-linux-gnueabihf"}; + static const char *const ARMebLibDirs[] = {"/lib"}; + static const char *const ARMebTriples[] = {"armeb-linux-gnueabi", + "armeb-linux-androideabi"}; +@@ -2077,6 +2078,78 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + return; + } + ++ if (TargetTriple.isMusl()) { ++ static const char *const AArch64MuslTriples[] = {"aarch64-linux-musl"}; ++ static const char *const ARMHFMuslTriples[] = { ++ "arm-linux-musleabihf", "armv7l-linux-musleabihf" ++ }; ++ static const char *const ARMMuslTriples[] = {"arm-linux-musleabi"}; ++ static const char *const X86_64MuslTriples[] = {"x86_64-linux-musl"}; ++ static const char *const X86MuslTriples[] = {"i686-linux-musl"}; ++ static const char *const MIPSMuslTriples[] = { ++ "mips-linux-musl", "mipsel-linux-musl", ++ "mipsel-linux-muslhf", "mips-linux-muslhf" ++ }; ++ static const char *const PPCMuslTriples[] = {"powerpc-linux-musl"}; ++ static const char *const PPC64MuslTriples[] = {"powerpc64-linux-musl"}; ++ static const char *const PPC64LEMuslTriples[] = {"powerpc64le-linux-musl"}; ++ ++ switch (TargetTriple.getArch()) { ++ case llvm::Triple::aarch64: ++ LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs)); ++ TripleAliases.append(begin(AArch64MuslTriples), end(AArch64MuslTriples)); ++ BiarchLibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs)); ++ BiarchTripleAliases.append(begin(AArch64MuslTriples), end(AArch64MuslTriples)); ++ break; ++ case llvm::Triple::arm: ++ LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs)); ++ if (TargetTriple.getEnvironment() == llvm::Triple::MuslEABIHF) { ++ TripleAliases.append(begin(ARMHFMuslTriples), end(ARMHFMuslTriples)); ++ } else { ++ TripleAliases.append(begin(ARMMuslTriples), end(ARMMuslTriples)); ++ } ++ break; ++ case llvm::Triple::x86_64: ++ LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); ++ TripleAliases.append(begin(X86_64MuslTriples), end(X86_64MuslTriples)); ++ BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs)); ++ BiarchTripleAliases.append(begin(X86MuslTriples), end(X86MuslTriples)); ++ break; ++ case llvm::Triple::x86: ++ LibDirs.append(begin(X86LibDirs), end(X86LibDirs)); ++ TripleAliases.append(begin(X86MuslTriples), end(X86MuslTriples)); ++ BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); ++ BiarchTripleAliases.append(begin(X86_64MuslTriples), end(X86_64MuslTriples)); ++ break; ++ case llvm::Triple::mips: ++ LibDirs.append(begin(MIPSLibDirs), end(MIPSLibDirs)); ++ TripleAliases.append(begin(MIPSMuslTriples), end(MIPSMuslTriples)); ++ break; ++ case llvm::Triple::ppc: ++ LibDirs.append(begin(PPCLibDirs), end(PPCLibDirs)); ++ TripleAliases.append(begin(PPCMuslTriples), end(PPCMuslTriples)); ++ BiarchLibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs)); ++ BiarchTripleAliases.append(begin(PPC64MuslTriples), end(PPC64MuslTriples)); ++ break; ++ case llvm::Triple::ppc64: ++ LibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs)); ++ TripleAliases.append(begin(PPC64MuslTriples), end(PPC64MuslTriples)); ++ BiarchLibDirs.append(begin(PPCLibDirs), end(PPCLibDirs)); ++ BiarchTripleAliases.append(begin(PPCMuslTriples), end(PPCMuslTriples)); ++ break; ++ case llvm::Triple::ppc64le: ++ LibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs)); ++ TripleAliases.append(begin(PPC64LEMuslTriples), end(PPC64LEMuslTriples)); ++ break; ++ default: ++ break; ++ } ++ TripleAliases.push_back(TargetTriple.str()); ++ if (TargetTriple.str() != BiarchTriple.str()) ++ BiarchTripleAliases.push_back(BiarchTriple.str()); ++ return; ++ } ++ + // Android targets should not use GNU/Linux tools or libraries. + if (TargetTriple.isAndroid()) { + static const char *const AArch64AndroidTriples[] = { diff --git a/srcpkgs/llvm11/files/patches/clang/clang-003-ppc64-dynamic-linker-path.patch b/srcpkgs/llvm11/files/patches/clang/clang-003-ppc64-dynamic-linker-path.patch new file mode 100644 index 00000000000..4b9b0b891d5 --- /dev/null +++ b/srcpkgs/llvm11/files/patches/clang/clang-003-ppc64-dynamic-linker-path.patch @@ -0,0 +1,18 @@ +--- a/lib/Driver/ToolChains/Linux.cpp ++++ b/lib/Driver/ToolChains/Linux.cpp +@@ -593,12 +593,12 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { + Loader = "ld.so.1"; + break; + case llvm::Triple::ppc64: +- LibDir = "lib64"; ++ LibDir = "lib"; + Loader = +- (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1"; ++ (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2"; + break; + case llvm::Triple::ppc64le: +- LibDir = "lib64"; ++ LibDir = "lib"; + Loader = + (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2"; + break; diff --git a/srcpkgs/llvm11/files/patches/clang/clang-004-ppc64-musl-elfv2.patch b/srcpkgs/llvm11/files/patches/clang/clang-004-ppc64-musl-elfv2.patch new file mode 100644 index 00000000000..2d6731d3b53 --- /dev/null +++ b/srcpkgs/llvm11/files/patches/clang/clang-004-ppc64-musl-elfv2.patch @@ -0,0 +1,30 @@ +--- a/lib/Basic/Targets/PPC.h ++++ b/lib/Basic/Targets/PPC.h +@@ -408,11 +408,10 @@ + SuitableAlign = 64; + } else if ((Triple.getArch() == llvm::Triple::ppc64le)) { + resetDataLayout("e-m:e-i64:64-n32:64"); +- ABI = "elfv2"; + } else { + resetDataLayout("E-m:e-i64:64-n32:64"); +- ABI = "elfv1"; + } ++ ABI = "elfv2"; + + if (Triple.isOSFreeBSD() || Triple.isOSOpenBSD() || + Triple.getOS() == llvm::Triple::AIX || Triple.isMusl()) { +--- a/lib/Driver/ToolChains/Clang.cpp ++++ b/lib/Driver/ToolChains/Clang.cpp +@@ -1883,11 +1883,7 @@ + ABIName = "elfv1-qpx"; + break; + } +- if ((T.isOSFreeBSD() && T.getOSMajorVersion() >= 13) || +- T.isOSOpenBSD() || T.isMusl()) +- ABIName = "elfv2"; +- else +- ABIName = "elfv1"; ++ ABIName = "elfv2"; + break; + } + case llvm::Triple::ppc64le: diff --git a/srcpkgs/llvm11/files/patches/compiler-rt/compiler-rt-armv5.patch b/srcpkgs/llvm11/files/patches/compiler-rt/compiler-rt-armv5.patch new file mode 100644 index 00000000000..893dd244c5b --- /dev/null +++ b/srcpkgs/llvm11/files/patches/compiler-rt/compiler-rt-armv5.patch @@ -0,0 +1,11 @@ +--- compiler-rt-10.0.0.src/lib/builtins/CMakeLists.txt ++++ compiler-rt-10.0.0.src/lib/builtins/CMakeLists.txt +@@ -428,8 +428,6 @@ + ) + set(arm_Thumb1_SOURCES + ${arm_Thumb1_JT_SOURCES} +- ${arm_Thumb1_SjLj_EH_SOURCES} +- ${arm_Thumb1_VFPv2_SOURCES} + ${arm_Thumb1_icache_SOURCES} + ) + diff --git a/srcpkgs/llvm11/files/patches/lldb/musl.patch b/srcpkgs/llvm11/files/patches/lldb/musl.patch new file mode 100644 index 00000000000..37416bb478d --- /dev/null +++ b/srcpkgs/llvm11/files/patches/lldb/musl.patch @@ -0,0 +1,31 @@ +--- a/source/Plugins/Process/Linux/Procfs.h ++++ b/source/Plugins/Process/Linux/Procfs.h +@@ -10,21 +10,12 @@ + // sys/procfs.h on Android/Linux for all supported architectures. + + #include ++#include + +-#ifdef __ANDROID__ +-#if defined(__arm64__) || defined(__aarch64__) +-typedef unsigned long elf_greg_t; +-typedef elf_greg_t +- elf_gregset_t[(sizeof(struct user_pt_regs) / sizeof(elf_greg_t))]; +-typedef struct user_fpsimd_state elf_fpregset_t; +-#ifndef NT_FPREGSET +-#define NT_FPREGSET NT_PRFPREG +-#endif // NT_FPREGSET +-#elif defined(__mips__) +-#ifndef NT_FPREGSET +-#define NT_FPREGSET NT_PRFPREG +-#endif // NT_FPREGSET +-#endif +-#else // __ANDROID__ ++#if !defined(__GLIBC__) && defined(__powerpc__) ++#define pt_regs musl_pt_regs ++#include ++#undef pt_regs ++#else + #include +-#endif // __ANDROID__ ++#endif diff --git a/srcpkgs/llvm11/files/patches/llvm/llvm-001-musl.patch b/srcpkgs/llvm11/files/patches/llvm/llvm-001-musl.patch new file mode 100644 index 00000000000..a0eddbf58be --- /dev/null +++ b/srcpkgs/llvm11/files/patches/llvm/llvm-001-musl.patch @@ -0,0 +1,58 @@ +From faca3fbd15d0c3108493c3c54cd93138e049ac43 Mon Sep 17 00:00:00 2001 +From: Andrea Brancaleoni +Date: Tue, 8 Sep 2015 22:03:02 +0200 +Subject: [PATCH 3/3] musl + +--- + include/llvm/Analysis/TargetLibraryInfo.h | 9 +++++++++ + lib/Support/DynamicLibrary.cpp | 2 +- + lib/Support/Unix/Signals.inc | 6 +++--- + utils/unittest/googletest/src/gtest.cc | 1 + + 5 files changed, 17 insertions(+), 6 deletions(-) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.h b/include/llvm/Analysis/TargetLibraryInfo.h +index e0a1ee3..465b65a 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.h ++++ b/include/llvm/Analysis/TargetLibraryInfo.h +@@ -18,6 +18,15 @@ + #include "llvm/IR/PassManager.h" + #include "llvm/Pass.h" + ++#undef fopen64 ++#undef fseeko64 ++#undef fstat64 ++#undef fstatvfs64 ++#undef ftello64 ++#undef lstat64 ++#undef stat64 ++#undef tmpfile64 ++ + namespace llvm { + template class ArrayRef; + +diff --git a/utils/unittest/googletest/src/gtest.cc b/utils/unittest/googletest/src/gtest.cc +index 5780764..1d548c1 100644 +--- a/utils/unittest/googletest/src/gtest.cc ++++ b/utils/unittest/googletest/src/gtest.cc +@@ -128,6 +128,7 @@ + + #if GTEST_CAN_STREAM_RESULTS_ + # include // NOLINT ++# include // NOLINT + # include // NOLINT + # include // NOLINT + # include // NOLINT +-- +2.5.1 + +--- a/lib/Support/Unix/DynamicLibrary.inc ++++ b/lib/Support/Unix/DynamicLibrary.inc +@@ -102,7 +102,7 @@ static void *DoSearch(const char* SymbolName) { + + // This macro returns the address of a well-known, explicit symbol + #define EXPLICIT_SYMBOL(SYM) \ +- if (!strcmp(SymbolName, #SYM)) return &SYM ++ if (!strcmp(SymbolName, #SYM)) return (void *)&SYM + + // Under glibc we have a weird situation. The stderr/out/in symbols are both + // macros and global variables because of standards requirements. So, we diff --git a/srcpkgs/llvm11/files/patches/llvm/llvm-002-musl-ppc64-elfv2.patch b/srcpkgs/llvm11/files/patches/llvm/llvm-002-musl-ppc64-elfv2.patch new file mode 100644 index 00000000000..93ccdf8dec6 --- /dev/null +++ b/srcpkgs/llvm11/files/patches/llvm/llvm-002-musl-ppc64-elfv2.patch @@ -0,0 +1,26 @@ +This patches LLVM to use ELFv2 on ppc64 unconditionally unless overridden. We +need this because unlike most distros we use ELFv2 for both glibc and musl +on big endian ppc64. + +--- a/lib/Target/PowerPC/PPCTargetMachine.cpp ++++ b/lib/Target/PowerPC/PPCTargetMachine.cpp +@@ -214,9 +214,8 @@ + + switch (TT.getArch()) { + case Triple::ppc64le: +- return PPCTargetMachine::PPC_ABI_ELFv2; + case Triple::ppc64: +- return PPCTargetMachine::PPC_ABI_ELFv1; ++ return PPCTargetMachine::PPC_ABI_ELFv2; + default: + return PPCTargetMachine::PPC_ABI_UNKNOWN; + } +--- a/test/CodeGen/PowerPC/ppc64-elf-abi.ll ++++ b/test/CodeGen/PowerPC/ppc64-elf-abi.ll +@@ -1,4 +1,5 @@ +-; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv1 ++; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv2 ++; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-musl < %s | FileCheck %s -check-prefix=CHECK-ELFv2 + ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv1 < %s | FileCheck %s -check-prefix=CHECK-ELFv1 + ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv2 < %s | FileCheck %s -check-prefix=CHECK-ELFv2 + ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv2 diff --git a/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch b/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch new file mode 100644 index 00000000000..fcbaba86335 --- /dev/null +++ b/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch @@ -0,0 +1,11 @@ +--- llvm/lib/Target/PowerPC/PPCSubtarget.cpp ++++ llvm/lib/Target/PowerPC/PPCSubtarget.cpp +@@ -150,7 +150,7 @@ void PPCSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { + + if ((TargetTriple.isOSFreeBSD() && TargetTriple.getOSMajorVersion() >= 13) || + TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD() || +- TargetTriple.isMusl()) ++ isTargetLinux()) + SecurePlt = true; + + if (HasSPE && IsPPC64) diff --git a/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch~b2110e270 (codelite: rebuild for llvm11) b/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch~b2110e270 (codelite: rebuild for llvm11) new file mode 100644 index 00000000000..5be8de4f068 --- /dev/null +++ b/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch~b2110e270 (codelite: rebuild for llvm11) @@ -0,0 +1,11 @@ +--- llvm/lib/Target/PowerPC/PPCSubtarget.cpp ++++ llvm/lib/Target/PowerPC/PPCSubtarget.cpp +@@ -153,7 +153,7 @@ + + if ((TargetTriple.isOSFreeBSD() && TargetTriple.getOSMajorVersion() >= 13) || + TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD() || +- TargetTriple.isMusl()) ++ isTargetLinux()) + SecurePlt = true; + + if (HasSPE && IsPPC64) diff --git a/srcpkgs/llvm11/files/patches/llvm/llvm-004-override-opt.patch b/srcpkgs/llvm11/files/patches/llvm/llvm-004-override-opt.patch new file mode 100644 index 00000000000..aaaefc963de --- /dev/null +++ b/srcpkgs/llvm11/files/patches/llvm/llvm-004-override-opt.patch @@ -0,0 +1,18 @@ +This allows us to override the optimization level as not all platforms can +deal with -O3. + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -999,6 +999,12 @@ + ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/tf_runtime) + endif() + ++set(VOID_CXX_OPT_FLAGS "" CACHE STRING "Optimization level to use") ++ ++if (NOT VOID_CXX_OPT_FLAGS STREQUAL "") ++ llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "${VOID_CXX_OPT_FLAGS}") ++endif() ++ + # Put this before tblgen. Else we have a circular dependence. + add_subdirectory(lib/Demangle) + add_subdirectory(lib/Support) diff --git a/srcpkgs/llvm11/files/patches/llvm/llvm-005-ppc-bigpic.patch b/srcpkgs/llvm11/files/patches/llvm/llvm-005-ppc-bigpic.patch new file mode 100644 index 00000000000..4e0045d97d3 --- /dev/null +++ b/srcpkgs/llvm11/files/patches/llvm/llvm-005-ppc-bigpic.patch @@ -0,0 +1,38 @@ +From f3dbdd49c06bfafc1d6138094cf42889c14d38b6 Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Sun, 3 Nov 2019 10:57:27 -0600 +Subject: [PATCH] [LLVM][PowerPC] Assume BigPIC if no PIC level is specified + +--- + llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp | 2 +- + llvm/lib/Target/PowerPC/PPCMCInstLower.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp +index 269b84b4e8d..03246a5242c 100644 +--- llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp ++++ llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp +@@ -488,7 +488,7 @@ void PPCAsmPrinter::EmitTlsCall(const MachineInstr *MI, + + // Add 32768 offset to the symbol so we follow up the latest GOT/PLT ABI. + if (Kind == MCSymbolRefExpr::VK_PLT && Subtarget->isSecurePlt() && +- M->getPICLevel() == PICLevel::BigPIC) ++ M->getPICLevel() != PICLevel::SmallPIC) + TlsRef = MCBinaryExpr::createAdd( + TlsRef, MCConstantExpr::create(32768, OutContext), OutContext); + const MachineOperand &MO = MI->getOperand(2); +diff --git a/llvm/lib/Target/PowerPC/PPCMCInstLower.cpp b/llvm/lib/Target/PowerPC/PPCMCInstLower.cpp +index 027e6bd1ba0..ae461f4eea9 100644 +--- llvm/lib/Target/PowerPC/PPCMCInstLower.cpp ++++ llvm/lib/Target/PowerPC/PPCMCInstLower.cpp +@@ -116,7 +116,7 @@ static MCOperand GetSymbolRef(const MachineOperand &MO, const MCSymbol *Symbol, + const MCExpr *Expr = MCSymbolRefExpr::create(Symbol, RefKind, Ctx); + // If -msecure-plt -fPIC, add 32768 to symbol. + if (Subtarget->isSecurePlt() && TM.isPositionIndependent() && +- M->getPICLevel() == PICLevel::BigPIC && ++ M->getPICLevel() != PICLevel::SmallPIC && + MO.getTargetFlags() == PPCII::MO_PLT) + Expr = + MCBinaryExpr::createAdd(Expr, MCConstantExpr::create(32768, Ctx), Ctx); +-- +2.23.0 diff --git a/srcpkgs/llvm11/files/patches/llvm/llvm-006-aarch64-mf_exec.patch b/srcpkgs/llvm11/files/patches/llvm/llvm-006-aarch64-mf_exec.patch new file mode 100644 index 00000000000..a64a317ee6c --- /dev/null +++ b/srcpkgs/llvm11/files/patches/llvm/llvm-006-aarch64-mf_exec.patch @@ -0,0 +1,25 @@ +Fix failures in AllocationTests/MappedMemoryTest.* on aarch64: + + Failing Tests (8): + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.AllocAndRelease/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.DuplicateNear/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.EnabledWrite/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.MultipleAllocAndRelease/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.SuccessiveNear/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.UnalignedNear/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.ZeroNear/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.ZeroSizeNear/3 + +Upstream-Issue: https://bugs.llvm.org/show_bug.cgi?id=14278#c10 + +--- a/lib/Support/Unix/Memory.inc ++++ b/lib/Support/Unix/Memory.inc +@@ -59,7 +59,7 @@ + return PROT_READ | PROT_WRITE | PROT_EXEC; + case llvm::sys::Memory::MF_EXEC: + #if (defined(__FreeBSD__) || defined(__POWERPC__) || defined (__ppc__) || \ +- defined(_POWER) || defined(_ARCH_PPC)) ++ defined(_POWER) || defined(_ARCH_PPC) || (defined(__linux__) && defined(__aarch64__))) + // On PowerPC, having an executable page that has no read permission + // can have unintended consequences. The function InvalidateInstruction- + // Cache uses instructions dcbf and icbi, both of which are treated by diff --git a/srcpkgs/llvm11/template b/srcpkgs/llvm11/template new file mode 100644 index 00000000000..78937672a47 --- /dev/null +++ b/srcpkgs/llvm11/template @@ -0,0 +1,310 @@ +# Template file for 'llvm11' +pkgname=llvm11 +version=11.0.0 +revision=1 +wrksrc="llvm-${version}.src" +build_style=cmake +configure_args=" + -DCMAKE_BUILD_TYPE=Release + -DLLVM_INSTALL_UTILS=ON + -DLLVM_BUILD_LLVM_DYLIB=ON + -DLLVM_LINK_LLVM_DYLIB=ON + -DLLVM_ENABLE_RTTI=ON + -DLLVM_ENABLE_FFI=ON + -DLLVM_BINUTILS_INCDIR=/usr/include" +hostmakedepends="groff perl python3 zlib-devel libffi-devel swig" +makedepends="python3-devel zlib-devel libffi-devel libedit-devel + libxml2-devel binutils-devel libatomic-devel" +depends="libllvm11" +short_desc="Low Level Virtual Machine" +maintainer="q66 " +license="NCSA" +homepage="https://www.llvm.org" +distfiles=" + https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/llvm-${version}.src.tar.xz + https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/lldb-${version}.src.tar.xz + https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/lld-${version}.src.tar.xz + https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/clang-${version}.src.tar.xz + https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/clang-tools-extra-${version}.src.tar.xz + https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/compiler-rt-${version}.src.tar.xz" +checksum=" + 913f68c898dfb4a03b397c5e11c6a2f39d0f22ed7665c9cefa87a34423a72469 + 8570c09f57399e21e0eea0dcd66ae0231d47eafc7a04d6fe5c4951b13c4d2c72 + efe7be4a7b7cdc6f3bcf222827c6f837439e6e656d12d6c885d5c8a80ff4fd1c + 0f96acace1e8326b39f220ba19e055ba99b0ab21c2475042dbc6a482649c5209 + fed318f75d560d0e0ae728e2fb8abce71e9d0c60dd120c9baac118522ce76c09 + 374aff82ff573a449f9aabbd330a5d0a441181c535a3599996127378112db234" +lib32disabled=yes +python_version=3 + +_lldb_enable=yes + +if [ "$CROSS_BUILD" ]; then + _lldb_enable=no +fi + +case "$XBPS_TARGET_MACHINE" in + ppc64le*) ;; + ppc*) _lldb_enable=no ;; +esac + +subpackages="clang-tools-extra clang clang-analyzer libclang libclang-cpp libllvm11" +if [ "$_lldb_enable" = "yes" ]; then + # XXX fails to cross compile due to python + subpackages+=" lldb lldb-devel" +fi +subpackages+=" lld lld-devel" + +post_patch() { + # patches + cd ${XBPS_BUILDDIR}/llvm-${version}.src + for i in ${FILESDIR}/patches/llvm/llvm-*.patch; do + msg_normal "Applying $i to llvm\n" + patch -sNp1 -i ${i} + done + + cd ${XBPS_BUILDDIR}/clang-${version}.src + for i in ${FILESDIR}/patches/clang/clang-*.patch; do + msg_normal "Applying $i to clang\n" + patch -sNp1 -i ${i} + done + + case "$XBPS_TARGET_MACHINE" in + armv5*) + cd ${XBPS_BUILDDIR}/compiler-rt-${version}.src + for i in ${FILESDIR}/patches/compiler-rt/compiler-rt-*.patch; do + msg_normal "Applying $i to compiler-rt\n" + patch -sNp1 -i ${i} + done + ;; + esac + + if [ "$_lldb_enable" = "yes" ]; then + cd ${XBPS_BUILDDIR}/lldb-${version}.src + for i in ${FILESDIR}/patches/lldb/*.patch; do + msg_normal "Applying $i to lldb\n" + patch -sNp1 -i ${i} + done + case "$XBPS_TARGET_MACHINE" in + *-musl) sed -i 's|__ptrace_request|int|g' source/Plugins/Process/Linux/NativeProcessLinux.cpp ;; + esac + fi + + # Move clang files into the llvm source. + if [ -d ${XBPS_BUILDDIR}/clang-${version}.src ]; then + mv ${XBPS_BUILDDIR}/clang-${version}.src ${wrksrc}/tools/clang + fi + # Move clang-tools-extra files into llvm source. + if [ -d ${XBPS_BUILDDIR}/clang-tools-extra-${version}.src ]; then + mv ${XBPS_BUILDDIR}/clang-tools-extra-${version}.src ${wrksrc}/tools/clang/tools/extra + fi + # Move lld files into the llvm source. + if [ -d ${XBPS_BUILDDIR}/lld-${version}.src ]; then + mv ${XBPS_BUILDDIR}/lld-${version}.src ${wrksrc}/tools/lld + fi + # Move lldb files into the llvm source. + if [ -d ${XBPS_BUILDDIR}/lldb-${version}.src ]; then + if [ "$_lldb_enable" = "yes" ]; then + mv ${XBPS_BUILDDIR}/lldb-${version}.src ${wrksrc}/tools/lldb + else + rm -rf ${XBPS_BUILDDIR}/lldb-${version}.src + fi + fi + # Move compiler-rt files into the llvm source. + if [ -d ${XBPS_BUILDDIR}/compiler-rt-${version}.src ]; then + mv ${XBPS_BUILDDIR}/compiler-rt-${version}.src ${wrksrc}/projects/compiler-rt + fi + case "$XBPS_TARGET_MACHINE" in + *-musl) + # Disable sanitizers + sed -i 's/set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE)/set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE)/' ${wrksrc}/projects/compiler-rt/cmake/config-ix.cmake + ;; + esac + +} + +pre_configure() { + # Vastly reduce size of debugging symbols: + CFLAGS=${CFLAGS/ -g/ -g1} + CXXFLAGS=${CXXFLAGS/ -g/ -g1} + + # since gcc9, the build likes to blow up for ppc32 apparently because + # of clang being too large for a 24-bit relative call to the PLT, so + # optimize for size instead + case "$XBPS_TARGET_MACHINE" in + mips*-musl|ppc|ppc-musl) configure_args+=" -DVOID_CXX_OPT_FLAGS=-Os" ;; + esac + + if [ "$CROSS_BUILD" ]; then + msg_normal "Building host tblgen\n" + mkdir -p build/HOST + cd build/HOST + CC="$BUILD_CC" CXX="$BUILD_CXX" CFLAGS="$BUILD_CFLAGS" \ + CXXFLAGS="$BUILD_CXXFLAGS" LDFLAGS="$BUILD_LDFLAGS" \ + cmake ../.. -DCMAKE_BUILD_TYPE=Release + make ${makejobs} -C utils/TableGen + make ${makejobs} -C tools/clang/utils/TableGen + configure_args+=" -DLLVM_TABLEGEN=${wrksrc}/build/HOST/bin/llvm-tblgen" + configure_args+=" -DCLANG_TABLEGEN=${wrksrc}/build/HOST/bin/clang-tblgen" + cd ../.. + fi + + case "$XBPS_TARGET_MACHINE" in + i686*) _arch="X86";; + x86_64*) _arch="X86";; + armv5*) _arch="Armv5te";; + armv6*) _arch="Armv6";; + armv7*) _arch="Armv7";; + aarch64*) _arch="AArch64";; + mips*) _arch="Mips";; + ppc*) _arch="PowerPC";; + esac + configure_args+=" -DLLVM_TARGET_ARCH=${_arch}" + configure_args+=" -DLLVM_HOST_TRIPLE=${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}" + configure_args+=" -DLLVM_DEFAULT_TARGET_TRIPLE=${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}" +} + +do_install() { + vlicense LICENSE.TXT + + cd build + cmake -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr -P cmake_install.cmake + + # Fix permissions of static libs + chmod -x ${DESTDIR}/usr/lib/*.a + + # Required for multilib. + if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then + for _header in llvm-config; do + mv ${DESTDIR}/usr/include/llvm/Config/${_header}{,-64}.h + vinstall ${FILESDIR}/llvm-Config-${_header}.h 644 \ + usr/include/llvm/Config ${_header}.h + done + fi + + # Remove llvm-config-host in cross builds. + if [ "$CROSS_BUILD" ]; then + rm -f ${DESTDIR}/usr/bin/llvm-config-host + fi +} + +clang-analyzer_package() { + pycompile_dirs="usr/share/scan-view" + depends="clang-${version}_${revision} python3" + short_desc+=" - A source code analysis framework" + homepage="https://clang-analyzer.llvm.org/" + pkg_install() { + vmove usr/share/man/man1/scan-build.1 + vmove "/usr/bin/scan-*" + vmove "/usr/share/scan-*" + vmove "/usr/libexec/*analyzer" + } +} + +clang-tools-extra_package() { + lib32disabled=yes + depends="clang-${version}_${revision} python3" + short_desc+=" - Extra Clang tools" + homepage="https://clang.llvm.org/extra/" + pkg_install() { + vmove usr/bin/clang-apply-replacements + vmove usr/bin/clang-query + vmove usr/bin/clang-rename + vmove usr/bin/clang-tidy + vmove usr/bin/diagtool + vmove usr/bin/find-all-symbols + vmove usr/bin/hmaptool + vmove usr/bin/modularize + vmove usr/bin/pp-trace + vmove usr/bin/sancov + vmove "usr/lib/libclangApplyReplacements*" + vmove "usr/lib/libclangQuery*" + vmove "usr/lib/libclangTidy*" + vmove "usr/share/clang/*tidy*" + } +} + +clang_package() { + lib32disabled=yes + depends="libstdc++-devel libgcc-devel binutils ${XBPS_TARGET_LIBC}-devel + libclang-${version}_${revision}" + short_desc+=" - C language family frontend" + homepage="https://clang.llvm.org/" + pkg_install() { + vmove usr/include/clang + vmove usr/include/clang-c + vmove "usr/bin/*clang*" + vmove usr/bin/c-index-test + vmove usr/lib/clang + vmove usr/lib/cmake/clang + vmove "usr/lib/libclang*.a" + vmove "usr/lib/libclang*.so" + vmove "usr/share/clang" + } +} + +libclang_package() { + short_desc+=" - C frontend runtime library" + pkg_install() { + vmove "usr/lib/libclang.so.*" + } +} + +libclang-cpp_package() { + short_desc+=" - C frontend runtime library (C++ interface)" + pkg_install() { + vmove "usr/lib/libclang-cpp.so.*" + } +} + +lld_package() { + lib32disabled=yes + short_desc+=" - linker" + homepage="https://lld.llvm.org" + pkg_install() { + vmove usr/bin/lld* + vmove usr/bin/wasm-ld + vmove usr/bin/ld.lld* + } +} + +lld-devel_package() { + lib32disabled=yes + short_desc+=" - linker - development files" + homepage="https://lld.llvm.org" + pkg_install() { + vmove usr/include/lld + vmove "usr/lib/liblld*a" + } +} + +lldb_package() { + lib32disabled=yes + depends+=" python3-six" + short_desc+=" - LLDB debugger" + homepage="https://lldb.llvm.org/" + pkg_install() { + vmove usr/bin/*lldb* + vmove usr/lib/liblldb*so.* + vmove /usr/lib/python* + # Depend on python3-six instead of conflicting + rm ${PKGDESTDIR}/usr/lib/python3*/site-packages/six.py + } +} + +lldb-devel_package() { + lib32disabled=yes + depends="lldb>=${version}_${revision}" + short_desc+=" - LLDB debugger - development files" + pkg_install() { + vmove usr/include/lldb + vmove "usr/lib/liblldb*.so" + } +} + +libllvm11_package() { + short_desc+=" - runtime library" + pkg_install() { + vmove "usr/lib/libLLVM-*.so*" + } +} diff --git a/srcpkgs/llvm11/update b/srcpkgs/llvm11/update new file mode 100644 index 00000000000..3d09eaff373 --- /dev/null +++ b/srcpkgs/llvm11/update @@ -0,0 +1,2 @@ +site=https://releases.llvm.org/ +pattern="'\K[\d\.]*(?=')" From a0da2fbf82386b9dd4590287edcc9190ad3b621b Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 18:13:23 +0100 Subject: [PATCH 02/22] llvm: update to 11.0.0 --- srcpkgs/llvm/template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/srcpkgs/llvm/template b/srcpkgs/llvm/template index 84c8d3a8e6e..eb71e7d67fa 100644 --- a/srcpkgs/llvm/template +++ b/srcpkgs/llvm/template @@ -1,10 +1,10 @@ # Template file for 'llvm' pkgname=llvm -version=10.0.0 -revision=2 +version=11.0.0 +revision=1 build_style=meta -depends="llvm10" -replaces="llvm9>=0 llvm8>=0 llvm7>=0 llvm6.0>=0 llvm3.9>=0" +depends="llvm11" +replaces="llvm10>=0 llvm9>=0 llvm8>=0 llvm7>=0 llvm6.0>=0 llvm3.9>=0" short_desc="LLVM meta package" maintainer="Enno Boland " license="Public Domain" From 6d16e98f895e340e826ae160519639af739f92c3 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Sun, 8 Nov 2020 18:21:16 +0100 Subject: [PATCH 03/22] llvm10: rebuild standalone --- srcpkgs/llvm10/files/llvm-Config-config.h | 9 - ...clang-001-fix-unwind-chain-inclusion.patch | 44 ---- .../clang/clang-002-add-musl-triples.patch | 91 -------- .../clang-003-ppc64-dynamic-linker-path.patch | 18 -- .../clang/clang-004-ppc64-musl-elfv2.patch | 30 --- .../compiler-rt/compiler-rt-armv5.patch | 11 - srcpkgs/llvm10/files/patches/lldb/musl.patch | 31 --- srcpkgs/llvm10/template | 211 +----------------- 8 files changed, 5 insertions(+), 440 deletions(-) delete mode 100644 srcpkgs/llvm10/files/llvm-Config-config.h delete mode 100644 srcpkgs/llvm10/files/patches/clang/clang-001-fix-unwind-chain-inclusion.patch delete mode 100644 srcpkgs/llvm10/files/patches/clang/clang-002-add-musl-triples.patch delete mode 100644 srcpkgs/llvm10/files/patches/clang/clang-003-ppc64-dynamic-linker-path.patch delete mode 100644 srcpkgs/llvm10/files/patches/clang/clang-004-ppc64-musl-elfv2.patch delete mode 100644 srcpkgs/llvm10/files/patches/compiler-rt/compiler-rt-armv5.patch delete mode 100644 srcpkgs/llvm10/files/patches/lldb/musl.patch diff --git a/srcpkgs/llvm10/files/llvm-Config-config.h b/srcpkgs/llvm10/files/llvm-Config-config.h deleted file mode 100644 index c369b4551f7..00000000000 --- a/srcpkgs/llvm10/files/llvm-Config-config.h +++ /dev/null @@ -1,9 +0,0 @@ -#include - -#if __WORDSIZE == 32 -#include "config-32.h" -#elif __WORDSIZE == 64 -#include "config-64.h" -#else -#error "Unknown word size" -#endif diff --git a/srcpkgs/llvm10/files/patches/clang/clang-001-fix-unwind-chain-inclusion.patch b/srcpkgs/llvm10/files/patches/clang/clang-001-fix-unwind-chain-inclusion.patch deleted file mode 100644 index 04244bcc274..00000000000 --- a/srcpkgs/llvm10/files/patches/clang/clang-001-fix-unwind-chain-inclusion.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 352974169f0d2b5da3d5321f588f5e3b5941330e Mon Sep 17 00:00:00 2001 -From: Andrea Brancaleoni -Date: Tue, 8 Sep 2015 22:14:57 +0200 -Subject: [PATCH 2/7] fix unwind chain inclusion - ---- - lib/Headers/unwind.h | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/lib/Headers/unwind.h b/lib/Headers/unwind.h -index 303d792..44e10cc 100644 ---- a/lib/Headers/unwind.h -+++ b/lib/Headers/unwind.h -@@ -9,9 +9,6 @@ - - /* See "Data Definitions for libgcc_s" in the Linux Standard Base.*/ - --#ifndef __CLANG_UNWIND_H --#define __CLANG_UNWIND_H -- - #if defined(__APPLE__) && __has_include_next() - /* Darwin (from 11.x on) provide an unwind.h. If that's available, - * use it. libunwind wraps some of its definitions in #ifdef _GNU_SOURCE, -@@ -39,6 +36,9 @@ - # endif - #else - -+#ifndef __CLANG_UNWIND_H -+#define __CLANG_UNWIND_H -+ - #include - - #ifdef __cplusplus -@@ -322,6 +322,7 @@ _Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *); - } - #endif - -+#endif /* __CLANG_UNWIND_H */ -+ - #endif - --#endif /* __CLANG_UNWIND_H */ --- -2.5.1 diff --git a/srcpkgs/llvm10/files/patches/clang/clang-002-add-musl-triples.patch b/srcpkgs/llvm10/files/patches/clang/clang-002-add-musl-triples.patch deleted file mode 100644 index aefc88d48f5..00000000000 --- a/srcpkgs/llvm10/files/patches/clang/clang-002-add-musl-triples.patch +++ /dev/null @@ -1,91 +0,0 @@ ---- a/lib/Driver/ToolChains/Gnu.cpp -+++ b/lib/Driver/ToolChains/Gnu.cpp -@@ -1938,7 +1938,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( - static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf", - "armv7hl-redhat-linux-gnueabi", - "armv6hl-suse-linux-gnueabi", -- "armv7hl-suse-linux-gnueabi"}; -+ "armv7hl-suse-linux-gnueabi", -+ "armv7l-linux-gnueabihf"}; - static const char *const ARMebLibDirs[] = {"/lib"}; - static const char *const ARMebTriples[] = {"armeb-linux-gnueabi", - "armeb-linux-androideabi"}; -@@ -2077,6 +2078,78 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( - return; - } - -+ if (TargetTriple.isMusl()) { -+ static const char *const AArch64MuslTriples[] = {"aarch64-linux-musl"}; -+ static const char *const ARMHFMuslTriples[] = { -+ "arm-linux-musleabihf", "armv7l-linux-musleabihf" -+ }; -+ static const char *const ARMMuslTriples[] = {"arm-linux-musleabi"}; -+ static const char *const X86_64MuslTriples[] = {"x86_64-linux-musl"}; -+ static const char *const X86MuslTriples[] = {"i686-linux-musl"}; -+ static const char *const MIPSMuslTriples[] = { -+ "mips-linux-musl", "mipsel-linux-musl", -+ "mipsel-linux-muslhf", "mips-linux-muslhf" -+ }; -+ static const char *const PPCMuslTriples[] = {"powerpc-linux-musl"}; -+ static const char *const PPC64MuslTriples[] = {"powerpc64-linux-musl"}; -+ static const char *const PPC64LEMuslTriples[] = {"powerpc64le-linux-musl"}; -+ -+ switch (TargetTriple.getArch()) { -+ case llvm::Triple::aarch64: -+ LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs)); -+ TripleAliases.append(begin(AArch64MuslTriples), end(AArch64MuslTriples)); -+ BiarchLibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs)); -+ BiarchTripleAliases.append(begin(AArch64MuslTriples), end(AArch64MuslTriples)); -+ break; -+ case llvm::Triple::arm: -+ LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs)); -+ if (TargetTriple.getEnvironment() == llvm::Triple::MuslEABIHF) { -+ TripleAliases.append(begin(ARMHFMuslTriples), end(ARMHFMuslTriples)); -+ } else { -+ TripleAliases.append(begin(ARMMuslTriples), end(ARMMuslTriples)); -+ } -+ break; -+ case llvm::Triple::x86_64: -+ LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); -+ TripleAliases.append(begin(X86_64MuslTriples), end(X86_64MuslTriples)); -+ BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs)); -+ BiarchTripleAliases.append(begin(X86MuslTriples), end(X86MuslTriples)); -+ break; -+ case llvm::Triple::x86: -+ LibDirs.append(begin(X86LibDirs), end(X86LibDirs)); -+ TripleAliases.append(begin(X86MuslTriples), end(X86MuslTriples)); -+ BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); -+ BiarchTripleAliases.append(begin(X86_64MuslTriples), end(X86_64MuslTriples)); -+ break; -+ case llvm::Triple::mips: -+ LibDirs.append(begin(MIPSLibDirs), end(MIPSLibDirs)); -+ TripleAliases.append(begin(MIPSMuslTriples), end(MIPSMuslTriples)); -+ break; -+ case llvm::Triple::ppc: -+ LibDirs.append(begin(PPCLibDirs), end(PPCLibDirs)); -+ TripleAliases.append(begin(PPCMuslTriples), end(PPCMuslTriples)); -+ BiarchLibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs)); -+ BiarchTripleAliases.append(begin(PPC64MuslTriples), end(PPC64MuslTriples)); -+ break; -+ case llvm::Triple::ppc64: -+ LibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs)); -+ TripleAliases.append(begin(PPC64MuslTriples), end(PPC64MuslTriples)); -+ BiarchLibDirs.append(begin(PPCLibDirs), end(PPCLibDirs)); -+ BiarchTripleAliases.append(begin(PPCMuslTriples), end(PPCMuslTriples)); -+ break; -+ case llvm::Triple::ppc64le: -+ LibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs)); -+ TripleAliases.append(begin(PPC64LEMuslTriples), end(PPC64LEMuslTriples)); -+ break; -+ default: -+ break; -+ } -+ TripleAliases.push_back(TargetTriple.str()); -+ if (TargetTriple.str() != BiarchTriple.str()) -+ BiarchTripleAliases.push_back(BiarchTriple.str()); -+ return; -+ } -+ - // Android targets should not use GNU/Linux tools or libraries. - if (TargetTriple.isAndroid()) { - static const char *const AArch64AndroidTriples[] = { diff --git a/srcpkgs/llvm10/files/patches/clang/clang-003-ppc64-dynamic-linker-path.patch b/srcpkgs/llvm10/files/patches/clang/clang-003-ppc64-dynamic-linker-path.patch deleted file mode 100644 index 4b9b0b891d5..00000000000 --- a/srcpkgs/llvm10/files/patches/clang/clang-003-ppc64-dynamic-linker-path.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/lib/Driver/ToolChains/Linux.cpp -+++ b/lib/Driver/ToolChains/Linux.cpp -@@ -593,12 +593,12 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { - Loader = "ld.so.1"; - break; - case llvm::Triple::ppc64: -- LibDir = "lib64"; -+ LibDir = "lib"; - Loader = -- (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1"; -+ (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2"; - break; - case llvm::Triple::ppc64le: -- LibDir = "lib64"; -+ LibDir = "lib"; - Loader = - (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2"; - break; diff --git a/srcpkgs/llvm10/files/patches/clang/clang-004-ppc64-musl-elfv2.patch b/srcpkgs/llvm10/files/patches/clang/clang-004-ppc64-musl-elfv2.patch deleted file mode 100644 index f1af1b79b5f..00000000000 --- a/srcpkgs/llvm10/files/patches/clang/clang-004-ppc64-musl-elfv2.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/lib/Basic/Targets/PPC.h -+++ b/lib/Basic/Targets/PPC.h -@@ -386,11 +386,10 @@ public: - - if ((Triple.getArch() == llvm::Triple::ppc64le)) { - resetDataLayout("e-m:e-i64:64-n32:64"); -- ABI = "elfv2"; - } else { - resetDataLayout("E-m:e-i64:64-n32:64"); -- ABI = "elfv1"; - } -+ ABI = "elfv2"; - - if (Triple.getOS() == llvm::Triple::AIX) - SuitableAlign = 64; ---- a/lib/Driver/ToolChains/Clang.cpp -+++ b/lib/Driver/ToolChains/Clang.cpp -@@ -1918,11 +1918,7 @@ void Clang::AddPPCTargetArgs(const ArgList &Args, - ABIName = "elfv1-qpx"; - break; - } -- -- if (T.isMusl() || (T.isOSFreeBSD() && T.getOSMajorVersion() >= 13)) -- ABIName = "elfv2"; -- else -- ABIName = "elfv1"; -+ ABIName = "elfv2"; - break; - } - case llvm::Triple::ppc64le: diff --git a/srcpkgs/llvm10/files/patches/compiler-rt/compiler-rt-armv5.patch b/srcpkgs/llvm10/files/patches/compiler-rt/compiler-rt-armv5.patch deleted file mode 100644 index 893dd244c5b..00000000000 --- a/srcpkgs/llvm10/files/patches/compiler-rt/compiler-rt-armv5.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- compiler-rt-10.0.0.src/lib/builtins/CMakeLists.txt -+++ compiler-rt-10.0.0.src/lib/builtins/CMakeLists.txt -@@ -428,8 +428,6 @@ - ) - set(arm_Thumb1_SOURCES - ${arm_Thumb1_JT_SOURCES} -- ${arm_Thumb1_SjLj_EH_SOURCES} -- ${arm_Thumb1_VFPv2_SOURCES} - ${arm_Thumb1_icache_SOURCES} - ) - diff --git a/srcpkgs/llvm10/files/patches/lldb/musl.patch b/srcpkgs/llvm10/files/patches/lldb/musl.patch deleted file mode 100644 index 37416bb478d..00000000000 --- a/srcpkgs/llvm10/files/patches/lldb/musl.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- a/source/Plugins/Process/Linux/Procfs.h -+++ b/source/Plugins/Process/Linux/Procfs.h -@@ -10,21 +10,12 @@ - // sys/procfs.h on Android/Linux for all supported architectures. - - #include -+#include - --#ifdef __ANDROID__ --#if defined(__arm64__) || defined(__aarch64__) --typedef unsigned long elf_greg_t; --typedef elf_greg_t -- elf_gregset_t[(sizeof(struct user_pt_regs) / sizeof(elf_greg_t))]; --typedef struct user_fpsimd_state elf_fpregset_t; --#ifndef NT_FPREGSET --#define NT_FPREGSET NT_PRFPREG --#endif // NT_FPREGSET --#elif defined(__mips__) --#ifndef NT_FPREGSET --#define NT_FPREGSET NT_PRFPREG --#endif // NT_FPREGSET --#endif --#else // __ANDROID__ -+#if !defined(__GLIBC__) && defined(__powerpc__) -+#define pt_regs musl_pt_regs -+#include -+#undef pt_regs -+#else - #include --#endif // __ANDROID__ -+#endif diff --git a/srcpkgs/llvm10/template b/srcpkgs/llvm10/template index bfbddb48127..b800da58d1c 100644 --- a/srcpkgs/llvm10/template +++ b/srcpkgs/llvm10/template @@ -1,7 +1,7 @@ # Template file for 'llvm10' pkgname=llvm10 version=10.0.0 -revision=6 +revision=7 wrksrc="llvm-${version}.src" build_style=cmake configure_args=" @@ -20,40 +20,14 @@ short_desc="Low Level Virtual Machine" maintainer="q66 " license="NCSA" homepage="https://www.llvm.org" -distfiles=" - https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/llvm-${version}.src.tar.xz - https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/lldb-${version}.src.tar.xz - https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/lld-${version}.src.tar.xz - https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/clang-${version}.src.tar.xz - https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/clang-tools-extra-${version}.src.tar.xz - https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/compiler-rt-${version}.src.tar.xz" -checksum=" - df83a44b3a9a71029049ec101fb0077ecbbdf5fe41e395215025779099a98fdf - dd1ffcb42ed033f5167089ec4c6ebe84fbca1db4a9eaebf5c614af09d89eb135 - b9a0d7c576eeef05bc06d6e954938a01c5396cee1d1e985891e0b1cf16e3d708 - 885b062b00e903df72631c5f98b9579ed1ed2790f74e5646b4234fa084eacb21 - acdf8cf6574b40e6b1dabc93e76debb84a9feb6f22970126b04d4ba18b92911c - 6a7da64d3a0a7320577b68b9ca4933bdcab676e898b759850e827333c3282c75" +distfiles="https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/llvm-${version}.src.tar.xz" +checksum="df83a44b3a9a71029049ec101fb0077ecbbdf5fe41e395215025779099a98fdf" lib32disabled=yes python_version=3 -_lldb_enable=yes +conflicts="llvm11>=0" -if [ "$CROSS_BUILD" ]; then - _lldb_enable=no -fi - -case "$XBPS_TARGET_MACHINE" in - ppc64le*) ;; - ppc*) _lldb_enable=no ;; -esac - -subpackages="clang-tools-extra clang clang-analyzer libclang libclang-cpp libllvm10" -if [ "$_lldb_enable" = "yes" ]; then - # XXX fails to cross compile due to python - subpackages+=" lldb lldb-devel" -fi -subpackages+=" lld lld-devel" +subpackages="libllvm10" post_patch() { # patches @@ -62,65 +36,6 @@ post_patch() { msg_normal "Applying $i to llvm\n" patch -sNp1 -i ${i} done - - cd ${XBPS_BUILDDIR}/clang-${version}.src - for i in ${FILESDIR}/patches/clang/clang-*.patch; do - msg_normal "Applying $i to clang\n" - patch -sNp1 -i ${i} - done - - case "$XBPS_TARGET_MACHINE" in - armv5*) - cd ${XBPS_BUILDDIR}/compiler-rt-${version}.src - for i in ${FILESDIR}/patches/compiler-rt/compiler-rt-*.patch; do - msg_normal "Applying $i to compiler-rt\n" - patch -sNp1 -i ${i} - done - ;; - esac - - if [ "$_lldb_enable" = "yes" ]; then - cd ${XBPS_BUILDDIR}/lldb-${version}.src - for i in ${FILESDIR}/patches/lldb/*.patch; do - msg_normal "Applying $i to lldb\n" - patch -sNp1 -i ${i} - done - case "$XBPS_TARGET_MACHINE" in - *-musl) sed -i 's|__ptrace_request|int|g' source/Plugins/Process/Linux/NativeProcessLinux.cpp ;; - esac - fi - - # Move clang files into the llvm source. - if [ -d ${XBPS_BUILDDIR}/clang-${version}.src ]; then - mv ${XBPS_BUILDDIR}/clang-${version}.src ${wrksrc}/tools/clang - fi - # Move clang-tools-extra files into llvm source. - if [ -d ${XBPS_BUILDDIR}/clang-tools-extra-${version}.src ]; then - mv ${XBPS_BUILDDIR}/clang-tools-extra-${version}.src ${wrksrc}/tools/clang/tools/extra - fi - # Move lld files into the llvm source. - if [ -d ${XBPS_BUILDDIR}/lld-${version}.src ]; then - mv ${XBPS_BUILDDIR}/lld-${version}.src ${wrksrc}/tools/lld - fi - # Move lldb files into the llvm source. - if [ -d ${XBPS_BUILDDIR}/lldb-${version}.src ]; then - if [ "$_lldb_enable" = "yes" ]; then - mv ${XBPS_BUILDDIR}/lldb-${version}.src ${wrksrc}/tools/lldb - else - rm -rf ${XBPS_BUILDDIR}/lldb-${version}.src - fi - fi - # Move compiler-rt files into the llvm source. - if [ -d ${XBPS_BUILDDIR}/compiler-rt-${version}.src ]; then - mv ${XBPS_BUILDDIR}/compiler-rt-${version}.src ${wrksrc}/projects/compiler-rt - fi - case "$XBPS_TARGET_MACHINE" in - *-musl) - # Disable sanitizers - sed -i 's/set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE)/set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE)/' ${wrksrc}/projects/compiler-rt/cmake/config-ix.cmake - ;; - esac - } pre_configure() { @@ -143,9 +58,7 @@ pre_configure() { CXXFLAGS="$BUILD_CXXFLAGS" LDFLAGS="$BUILD_LDFLAGS" \ cmake ../.. -DCMAKE_BUILD_TYPE=Release make ${makejobs} -C utils/TableGen - make ${makejobs} -C tools/clang/utils/TableGen configure_args+=" -DLLVM_TABLEGEN=${wrksrc}/build/HOST/bin/llvm-tblgen" - configure_args+=" -DCLANG_TABLEGEN=${wrksrc}/build/HOST/bin/clang-tblgen" cd ../.. fi @@ -188,120 +101,6 @@ do_install() { fi } -clang-analyzer_package() { - pycompile_dirs="usr/share/scan-view" - depends="clang-${version}_${revision} python3" - short_desc+=" - A source code analysis framework" - homepage="https://clang-analyzer.llvm.org/" - pkg_install() { - vmove usr/share/man/man1/scan-build.1 - vmove "/usr/bin/scan-*" - vmove "/usr/share/scan-*" - vmove "/usr/libexec/*analyzer" - } -} - -clang-tools-extra_package() { - lib32disabled=yes - depends="clang-${version}_${revision} python3" - short_desc+=" - Extra Clang tools" - homepage="https://clang.llvm.org/extra/" - pkg_install() { - vmove usr/bin/clang-apply-replacements - vmove usr/bin/clang-query - vmove usr/bin/clang-rename - vmove usr/bin/clang-tidy - vmove usr/bin/diagtool - vmove usr/bin/find-all-symbols - vmove usr/bin/hmaptool - vmove usr/bin/modularize - vmove usr/bin/pp-trace - vmove usr/bin/sancov - vmove "usr/lib/libclangApplyReplacements*" - vmove "usr/lib/libclangQuery*" - vmove "usr/lib/libclangTidy*" - vmove "usr/share/clang/*tidy*" - } -} - -clang_package() { - lib32disabled=yes - depends="libstdc++-devel libgcc-devel binutils ${XBPS_TARGET_LIBC}-devel - libclang-${version}_${revision}" - short_desc+=" - C language family frontend" - homepage="https://clang.llvm.org/" - pkg_install() { - vmove usr/include/clang - vmove usr/include/clang-c - vmove "usr/bin/*clang*" - vmove usr/bin/c-index-test - vmove usr/lib/clang - vmove usr/lib/cmake/clang - vmove "usr/lib/libclang*.a" - vmove "usr/lib/libclang*.so" - vmove "usr/share/clang" - } -} - -libclang_package() { - short_desc+=" - C frontend runtime library" - pkg_install() { - vmove "usr/lib/libclang.so.*" - } -} - -libclang-cpp_package() { - short_desc+=" - C frontend runtime library (C++ interface)" - pkg_install() { - vmove "usr/lib/libclang-cpp.so.*" - } -} - -lld_package() { - lib32disabled=yes - short_desc+=" - linker" - homepage="https://lld.llvm.org" - pkg_install() { - vmove usr/bin/lld* - vmove usr/bin/wasm-ld - vmove usr/bin/ld.lld* - } -} - -lld-devel_package() { - lib32disabled=yes - short_desc+=" - linker - development files" - homepage="https://lld.llvm.org" - pkg_install() { - vmove usr/include/lld - vmove "usr/lib/liblld*a" - } -} - -lldb_package() { - lib32disabled=yes - depends+=" python3-six" - short_desc+=" - LLDB debugger" - homepage="https://lldb.llvm.org/" - pkg_install() { - vmove usr/bin/*lldb* - vmove usr/lib/liblldb*so.* - vmove /usr/lib/python* - # Depend on python3-six instead of conflicting - rm ${PKGDESTDIR}/usr/lib/python3*/site-packages/six.py - } -} - -lldb-devel_package() { - lib32disabled=yes - depends="lldb>=${version}_${revision}" - short_desc+=" - LLDB debugger - development files" - pkg_install() { - vmove usr/include/lldb - vmove "usr/lib/liblldb*.so" - } -} - libllvm10_package() { short_desc+=" - runtime library" pkg_install() { From 5ce860e47ae647dee6f12a85d444bb28d06c5b17 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Sun, 8 Nov 2020 18:28:52 +0100 Subject: [PATCH 04/22] llvm-libunwind: update to 11.0.0 --- srcpkgs/llvm-libunwind/template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/srcpkgs/llvm-libunwind/template b/srcpkgs/llvm-libunwind/template index 6e20a791e65..8fce56efd70 100644 --- a/srcpkgs/llvm-libunwind/template +++ b/srcpkgs/llvm-libunwind/template @@ -1,18 +1,18 @@ # Template file for 'llvm-libunwind' pkgname=llvm-libunwind -version=10.0.0 +version=11.0.0 revision=1 build_style=cmake wrksrc="libunwind-${version}.src" -hostmakedepends="llvm10" -makedepends="llvm10" +hostmakedepends="llvm11" +makedepends="llvm11" make_build_args="VERBOSE=1" short_desc="LLVM version of libunwind library" maintainer="Orphaned " license="NCSA, MIT" homepage="https://llvm.org" distfiles="https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/libunwind-${version}.src.tar.xz" -checksum=09dc5ecc4714809ecf62908ae8fe8635ab476880455287036a2730966833c626 +checksum=8455011c33b14abfe57b2fd9803fb610316b16d4c9818bec552287e2ba68922f post_install() { vmkdir usr/include From 855b1e78b094003cf20534ba521882813117a3c2 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 01:17:26 +0100 Subject: [PATCH 05/22] libcxxabi: update to 11.0.0 --- srcpkgs/libcxxabi/template | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/srcpkgs/libcxxabi/template b/srcpkgs/libcxxabi/template index 393aefc5b31..21cba4dbc5f 100644 --- a/srcpkgs/libcxxabi/template +++ b/srcpkgs/libcxxabi/template @@ -1,23 +1,23 @@ # Template file for 'libcxxabi' pkgname=libcxxabi -version=10.0.0 +version=11.0.0 revision=1 wrksrc="${pkgname}-${version}.src" build_style=cmake -configure_args="-DLIBCXXABI_LIBCXX_INCLUDES=../libcxx/include +configure_args="-DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/include -DLIBCXXABI_USE_LLVM_UNWINDER=1 -DLLVM_DEFAULT_TARGET_TRIPLE=${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}" make_build_args="VERBOSE=1" -hostmakedepends="clang-tools-extra llvm10" -makedepends="llvm10 llvm-libunwind-devel" +hostmakedepends="clang-tools-extra llvm11" +makedepends="llvm11 llvm-libunwind-devel" short_desc="Low-level support for libc++ standard library" maintainer="Orphaned " license="NCSA, MIT" homepage="https://libcxxabi.llvm.org" distfiles="https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/libcxxabi-${version}.src.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/libcxx-${version}.src.tar.xz" -checksum="e71bac75a88c9dde455ad3f2a2b449bf745eafd41d2d8432253b2964e0ca14e1 - 270f8a3f176f1981b0f6ab8aa556720988872ec2b48ed3b605d0ced8d09156c7" +checksum="58697d4427b7a854ec7529337477eb4fba16407222390ad81a40d125673e4c15 + 6c1ee6690122f2711a77bc19241834a9219dda5036e1597bfa397f341a9b8b7a" case "$XBPS_TARGET_MACHINE" in armv[67]l) @@ -26,11 +26,8 @@ case "$XBPS_TARGET_MACHINE" in esac post_extract() { - # Break dependency cycle, we just need the headers here - mv ../libcxx-${version}.src libcxx - - # For musl - sed -i 's/!defined(_GCC_MAX_ALIGN_T)/& \&\& !defined(__DEFINED_max_align_t)/' libcxx/include/stddef.h + # Since llvm 11, libcxx needs to be present next to the libcxxabi root + mv ../libcxx-${version}.src ../libcxx } post_install() { From ecc37be2127da750ee3f8584070301903fa2b56a Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 01:17:50 +0100 Subject: [PATCH 06/22] libcxx: update to 11.0.0 --- srcpkgs/libcxx/template | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/srcpkgs/libcxx/template b/srcpkgs/libcxx/template index 95a16bccf57..3f15b63d3a7 100644 --- a/srcpkgs/libcxx/template +++ b/srcpkgs/libcxx/template @@ -1,21 +1,27 @@ # Template file for 'libcxx' pkgname=libcxx -version=10.0.0 +version=11.0.0 revision=1 wrksrc="${pkgname}-${version}.src" build_style=cmake configure_args+=" -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON -DLIBCXX_CXX_ABI_LIBRARY_PATH=${XBPS_CROSS_BASE}/usr/lib -DLIBCXXABI_USE_LLVM_UNWINDER=1" -hostmakedepends="llvm10 clang-tools-extra python3" -makedepends="libcxxabi-devel llvm10 llvm-libunwind-devel" +hostmakedepends="llvm11 clang-tools-extra python3" +makedepends="libcxxabi-devel llvm11 llvm-libunwind-devel" make_build_args="VERBOSE=1" short_desc="New implementation of the C++ standard library, targeting C++11, C++14 and above" maintainer="Orphaned " license="NCSA, MIT" homepage="https://libcxx.llvm.org" -distfiles="https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/libcxx-${version}.src.tar.xz" -checksum=270f8a3f176f1981b0f6ab8aa556720988872ec2b48ed3b605d0ced8d09156c7 +distfiles=" + https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/libcxx-${version}.src.tar.xz + https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/libcxxabi-${version}.src.tar.xz + https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/llvm-${version}.src.tar.xz" +checksum=" + 6c1ee6690122f2711a77bc19241834a9219dda5036e1597bfa397f341a9b8b7a + 58697d4427b7a854ec7529337477eb4fba16407222390ad81a40d125673e4c15 + 913f68c898dfb4a03b397c5e11c6a2f39d0f22ed7665c9cefa87a34423a72469" case "$XBPS_TARGET_MACHINE" in *-musl) configure_args+=" -DLIBCXX_HAS_MUSL_LIBC=YES" @@ -23,9 +29,12 @@ esac post_extract() { case "$XBPS_TARGET_MACHINE" in - *-musl) patch -Np1 <${FILESDIR}/libcxx-0001-musl-hacks.patch - sed -i 's/!defined(_GCC_MAX_ALIGN_T)/& \&\& !defined(__DEFINED_max_align_t)/' include/stddef.h ;; + *-musl) patch -Np1 <${FILESDIR}/libcxx-0001-musl-hacks.patch ;; esac + + # Since llvm 11, libcxxabi and llvm need to be present next to the libcxx root + mv ../libcxxabi-${version}.src ../libcxxabi + mv ../llvm-${version}.src ../llvm } post_install() { From b79366c5e56f25ce3af534fc635ed2223cba2671 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 02:22:52 +0100 Subject: [PATCH 07/22] mesa: rebuild for llvm11 --- srcpkgs/mesa/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/mesa/template b/srcpkgs/mesa/template index 0ec6360e0b3..7c08820279e 100644 --- a/srcpkgs/mesa/template +++ b/srcpkgs/mesa/template @@ -1,7 +1,7 @@ # Template file for 'mesa' pkgname=mesa version=20.2.1 -revision=1 +revision=2 wrksrc="mesa-${version}" build_style=meson configure_args="-Dglvnd=true -Dshared-glapi=true -Dgbm=true -Degl=true From 55dfbbe344a6c0fe74cc1f63f1642675eede0932 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 02:37:38 +0100 Subject: [PATCH 08/22] shiboken2: rebuild for llvm11 --- srcpkgs/shiboken2/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/shiboken2/template b/srcpkgs/shiboken2/template index 20ea5aae7e2..d0072254842 100644 --- a/srcpkgs/shiboken2/template +++ b/srcpkgs/shiboken2/template @@ -1,7 +1,7 @@ # Template file for 'shiboken2' pkgname=shiboken2 version=5.15.0 -revision=2 +revision=3 _pkgname="pyside-setup-opensource-src-${version}" wrksrc="${_pkgname/%5.14.2.1/5.14.2}" build_wrksrc="sources/shiboken2" From 72a1716259d16440ce5b23c8ccbaa6c73756d6a4 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 02:48:41 +0100 Subject: [PATCH 09/22] gnome-builder: rebuild for llvm11 --- srcpkgs/gnome-builder/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/gnome-builder/template b/srcpkgs/gnome-builder/template index 22144f3536e..3d5932a67a0 100644 --- a/srcpkgs/gnome-builder/template +++ b/srcpkgs/gnome-builder/template @@ -1,7 +1,7 @@ # Template file for 'gnome-builder' pkgname=gnome-builder version=3.38.0 -revision=2 +revision=3 build_style=meson build_helper=qemu configure_args="-Dwith_webkit=true -Dwith_sysprof=true -Dhelp=true" From 247ae03fcafbe7145fca4180e0421776be654a96 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 02:49:46 +0100 Subject: [PATCH 10/22] juCi++: rebuild for llvm11 --- srcpkgs/juCi++/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/juCi++/template b/srcpkgs/juCi++/template index 69bbc07ab01..ca4650f8f1f 100644 --- a/srcpkgs/juCi++/template +++ b/srcpkgs/juCi++/template @@ -1,7 +1,7 @@ # Template file for 'juCi++' pkgname=juCi++ version=1.6.0 -revision=1 +revision=2 _libclangmm_commit="043d96d0bfbfe4bbb216a0954992d744a35c60ab" _tiny_commit="953b19c4c0692b18fb729ffd30f1cc3412797cda" wrksrc="jucipp-v${version}" From 9039929902d69eaf6637558913ae4f9402f6c7a5 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 03:25:28 +0100 Subject: [PATCH 11/22] qt5: rebuild for llvm11 --- srcpkgs/qt5/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/qt5/template b/srcpkgs/qt5/template index 1954048e2b1..b717438d4dd 100644 --- a/srcpkgs/qt5/template +++ b/srcpkgs/qt5/template @@ -1,7 +1,7 @@ # Template file for 'qt5' pkgname=qt5 version=5.15.1 -revision=2 +revision=3 wrksrc="qt-everywhere-src-${version}" build_style=meta hostmakedepends="cmake clang flex perl glib-devel pkg-config From 8cd2e2026b0c14c8bdbf6534ad6208a865b4444b Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 03:38:52 +0100 Subject: [PATCH 12/22] qtcreator: rebuild for llvm11 --- srcpkgs/qtcreator/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/qtcreator/template b/srcpkgs/qtcreator/template index ddbd0168fa5..67bb0e81199 100644 --- a/srcpkgs/qtcreator/template +++ b/srcpkgs/qtcreator/template @@ -1,7 +1,7 @@ # Template file for 'qtcreator' pkgname=qtcreator version=4.13.2 -revision=1 +revision=2 wrksrc="qt-creator-opensource-src-${version}" build_style=qmake make_install_args="INSTALL_ROOT=\${DESTDIR}/usr" From 2d21d4b84717cb66b15e782e494afba7c04ccd52 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 12:48:23 +0100 Subject: [PATCH 13/22] kdevelop: rebuild for llvm11 --- srcpkgs/kdevelop/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/kdevelop/template b/srcpkgs/kdevelop/template index 3cea3eb2e3e..bdab6e149cb 100644 --- a/srcpkgs/kdevelop/template +++ b/srcpkgs/kdevelop/template @@ -1,7 +1,7 @@ # Template file for 'kdevelop' pkgname=kdevelop version=5.6.0 -revision=1 +revision=2 build_style=cmake configure_args="-DBUILD_TESTING=OFF" hostmakedepends="extra-cmake-modules qt5-qmake qt5-host-tools qt5-tools From 03aaa6306dc2c3184b476937d65c37eab8d81d09 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 13:05:02 +0100 Subject: [PATCH 14/22] codelite: rebuild for llvm11 --- srcpkgs/codelite/template | 2 +- .../llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/srcpkgs/codelite/template b/srcpkgs/codelite/template index a2a09d79fa1..2cb5d35bccb 100644 --- a/srcpkgs/codelite/template +++ b/srcpkgs/codelite/template @@ -1,7 +1,7 @@ # Template file for 'codelite' pkgname=codelite version=13.0 -revision=3 +revision=4 archs="i686* x86_64* ppc64le*" build_style=cmake configure_args="-DWITH_PCH=0 diff --git a/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch b/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch index fcbaba86335..5be8de4f068 100644 --- a/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch +++ b/srcpkgs/llvm11/files/patches/llvm/llvm-003-ppc-secureplt.patch @@ -1,11 +1,11 @@ --- llvm/lib/Target/PowerPC/PPCSubtarget.cpp +++ llvm/lib/Target/PowerPC/PPCSubtarget.cpp -@@ -150,7 +150,7 @@ void PPCSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { - +@@ -153,7 +153,7 @@ + if ((TargetTriple.isOSFreeBSD() && TargetTriple.getOSMajorVersion() >= 13) || TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD() || - TargetTriple.isMusl()) + isTargetLinux()) SecurePlt = true; - + if (HasSPE && IsPPC64) From 9365a6f16f079b600b39c34114aee1209a34b670 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 13:07:44 +0100 Subject: [PATCH 15/22] rtags: rebuild for llvm11 --- srcpkgs/rtags/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/rtags/template b/srcpkgs/rtags/template index 715f2e0c731..d718e6c3090 100644 --- a/srcpkgs/rtags/template +++ b/srcpkgs/rtags/template @@ -1,7 +1,7 @@ # Template file for 'rtags' pkgname=rtags version=2.38 -revision=3 +revision=4 build_style=cmake # Don't run tests in do_install, please. configure_args="-DSKIP_CTEST=TRUE" From b674578c892fd01168126d3fe3d7da5d3ad2171b Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 13:08:56 +0100 Subject: [PATCH 16/22] ccls: rebuild for llvm11 --- srcpkgs/ccls/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/ccls/template b/srcpkgs/ccls/template index 1eb6d9bafc7..35a73955e11 100644 --- a/srcpkgs/ccls/template +++ b/srcpkgs/ccls/template @@ -1,7 +1,7 @@ # Template file for 'ccls' pkgname=ccls version=0.20201025 -revision=1 +revision=2 build_style=cmake hostmakedepends="clang-tools-extra" makedepends="clang llvm ncurses-devel rapidjson zlib-devel" From d871410d6f50cef031983657ceaaf75846c8e208 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 13:32:48 +0100 Subject: [PATCH 17/22] ispc: rebuild for llvm11 --- srcpkgs/ispc/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/ispc/template b/srcpkgs/ispc/template index 2f36d45157a..054e3a1523d 100644 --- a/srcpkgs/ispc/template +++ b/srcpkgs/ispc/template @@ -1,7 +1,7 @@ # Template file for 'ispc' pkgname=ispc version=1.14.1 -revision=1 +revision=2 archs="x86_64*" build_style=cmake configure_args="-DISPC_NO_DUMPS=ON -DARM_ENABLED=OFF" From 80806fcc24c0b3fb9134225af392ca2b888796bf Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 14:24:20 +0100 Subject: [PATCH 18/22] zig: update to 0.7.0 --- srcpkgs/zig/template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/srcpkgs/zig/template b/srcpkgs/zig/template index e34d6471728..727a675383a 100644 --- a/srcpkgs/zig/template +++ b/srcpkgs/zig/template @@ -1,16 +1,16 @@ # Template file for 'zig' pkgname=zig -version=0.6.0 -revision=2 +version=0.7.0 +revision=1 archs="x86_64* aarch64*" build_style=cmake -makedepends="clang llvm10 lld-devel" +makedepends="clang llvm11 lld-devel" short_desc="Programming language designed for robustness, optimality, and clarity" maintainer="Duncaen " license="MIT" homepage="https://ziglang.org/" distfiles="https://ziglang.org/download/${version}/zig-${version}.tar.xz" -checksum=5d167dc19354282dd35dd17b38e99e1763713b9be8a4ba9e9e69284e059e7204 +checksum=0efd2cf6c3b05723db80e9cf193bc55150bba84ca41f855a90f53fc756445f83 nopie=yes nocross=yes From 1f0b5174e873d207778eebe336414e7e9212b866 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 14:41:53 +0100 Subject: [PATCH 19/22] clazy: rebuild for llvm11 --- .../files/clazy-001-llvm11-stringref.patch | 343 ++++++++++++++++++ .../files/clazy-002-llvm11-stringref.patch | 28 ++ srcpkgs/clazy/template | 8 +- 3 files changed, 378 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/clazy/files/clazy-001-llvm11-stringref.patch create mode 100644 srcpkgs/clazy/files/clazy-002-llvm11-stringref.patch diff --git a/srcpkgs/clazy/files/clazy-001-llvm11-stringref.patch b/srcpkgs/clazy/files/clazy-001-llvm11-stringref.patch new file mode 100644 index 00000000000..48049fa594a --- /dev/null +++ b/srcpkgs/clazy/files/clazy-001-llvm11-stringref.patch @@ -0,0 +1,343 @@ +From 30d6a2b64f5a05722fdc5d8e3754dbf13425cd62 Mon Sep 17 00:00:00 2001 +From: Egor Gabov +Date: Thu, 4 Jun 2020 17:10:21 +0300 +Subject: [PATCH] updated for compatibility with LLVM 10 + +In LLVM 10 llvm::StringRef operator std::string() is marked as explicit. +In this commit all implicit conversion from llvm::StringRef to +std::string are changed by explicit. +Also included header file clang/Basic/FileManager.h in src/MiniDumper +because without this header, class clang::FileEntry in incomplete class +--- + src/FixItExporter.cpp | 5 +++-- + src/MiniAstDumper.cpp | 1 + + src/Utils.cpp | 2 +- + src/checkbase.cpp | 2 +- + src/checks/detachingbase.cpp | 2 +- + src/checks/level0/qenums.cpp | 2 +- + src/checks/level0/qt-macros.cpp | 4 ++-- + src/checks/level0/unused-non-trivial-variable.cpp | 2 +- + src/checks/level1/detaching-temporary.cpp | 2 +- + src/checks/level1/non-pod-global-static.cpp | 2 +- + src/checks/level1/qproperty-without-notify.cpp | 2 +- + src/checks/level2/missing-typeinfo.cpp | 2 +- + src/checks/level2/old-style-connect.cpp | 6 +++--- + src/checks/level2/rule-of-three.cpp | 2 +- + src/checks/manuallevel/ifndef-define-typo.cpp | 6 +++--- + src/checks/manuallevel/qproperty-type-mismatch.cpp | 2 +- + src/checks/manuallevel/qrequiredresult-candidates.cpp | 2 +- + src/checks/manuallevel/qt-keywords.cpp | 4 ++-- + src/checks/manuallevel/reserve-candidates.cpp | 3 ++- + 19 files changed, 28 insertions(+), 25 deletions(-) + +diff --git a/src/FixItExporter.cpp b/src/FixItExporter.cpp +index f3af2e54..44240cf5 100644 +--- a/src/FixItExporter.cpp ++++ b/src/FixItExporter.cpp +@@ -68,7 +68,7 @@ void FixItExporter::BeginSourceFile(const LangOptions &LangOpts, const Preproces + + const auto id = SourceMgr.getMainFileID(); + const auto entry = SourceMgr.getFileEntryForID(id); +- getTuDiag().MainSourceFile = entry->getName(); ++ getTuDiag().MainSourceFile = static_cast(entry->getName()); + } + + bool FixItExporter::IncludeInDiagnosticCounts() const +@@ -89,7 +89,8 @@ tooling::Diagnostic FixItExporter::ConvertDiagnostic(const Diagnostic &Info) + // TODO: This returns an empty string: DiagEngine->getDiagnosticIDs()->getWarningOptionForDiag(Info.getID()); + // HACK: capture it at the end of the message: Message text [check-name] + +- std::string checkName = DiagEngine.getDiagnosticIDs()->getWarningOptionForDiag(Info.getID()); ++ std::string checkName = ++ static_cast(DiagEngine.getDiagnosticIDs()->getWarningOptionForDiag(Info.getID())); + std::string messageText; + + if (checkName.empty()) { +diff --git a/src/MiniAstDumper.cpp b/src/MiniAstDumper.cpp +index 47661749..6124e6e8 100644 +--- a/src/MiniAstDumper.cpp ++++ b/src/MiniAstDumper.cpp +@@ -24,6 +24,7 @@ + + #include + #include ++#include + + using namespace clang; + using namespace std; +diff --git a/src/Utils.cpp b/src/Utils.cpp +index 001ced98..b0812fe3 100644 +--- a/src/Utils.cpp ++++ b/src/Utils.cpp +@@ -878,7 +878,7 @@ string Utils::filenameForLoc(SourceLocation loc, const clang::SourceManager &sm) + if (loc.isMacroID()) + loc = sm.getExpansionLoc(loc); + +- const string filename = sm.getFilename(loc); ++ const string filename = static_cast(sm.getFilename(loc)); + auto splitted = clazy::splitString(filename, '/'); + if (splitted.empty()) + return {}; +diff --git a/src/checkbase.cpp b/src/checkbase.cpp +index 8b40e19d..22a426cf 100644 +--- a/src/checkbase.cpp ++++ b/src/checkbase.cpp +@@ -188,7 +188,7 @@ bool CheckBase::shouldIgnoreFile(SourceLocation loc) const + if (!loc.isValid()) + return true; + +- string filename = sm().getFilename(loc); ++ string filename = static_cast(sm().getFilename(loc)); + + return clazy::any_of(m_filesToIgnore, [filename](const std::string &ignored) { + return clazy::contains(filename, ignored); +diff --git a/src/checks/detachingbase.cpp b/src/checks/detachingbase.cpp +index 70311f42..1b094ee7 100644 +--- a/src/checks/detachingbase.cpp ++++ b/src/checks/detachingbase.cpp +@@ -57,7 +57,7 @@ bool DetachingBase::isDetachingMethod(CXXMethodDecl *method, DetachingMethodType + + const std::unordered_map> &methodsByType = detachingMethodType == DetachingMethod ? clazy::detachingMethods() + : clazy::detachingMethodsWithConstCounterParts(); +- auto it = methodsByType.find(className); ++ auto it = methodsByType.find(static_cast(className)); + if (it != methodsByType.cend()) { + const auto &methods = it->second; + if (clazy::contains(methods, clazy::name(method))) +diff --git a/src/checks/level0/qenums.cpp b/src/checks/level0/qenums.cpp +index 00075b5c..db8910f2 100644 +--- a/src/checks/level0/qenums.cpp ++++ b/src/checks/level0/qenums.cpp +@@ -59,7 +59,7 @@ void QEnums::VisitMacroExpands(const Token &MacroNameTok, const SourceRange &ran + // We simply check if :: is present because it's very cumbersome to to check for different classes when dealing with the pre-processor + + CharSourceRange crange = Lexer::getAsCharRange(range, sm(), lo()); +- string text = Lexer::getSourceText(crange, sm(), lo()); ++ string text = static_cast(Lexer::getSourceText(crange, sm(), lo())); + if (clazy::contains(text, "::")) + return; + } +diff --git a/src/checks/level0/qt-macros.cpp b/src/checks/level0/qt-macros.cpp +index d3a587cb..ab8e9f52 100644 +--- a/src/checks/level0/qt-macros.cpp ++++ b/src/checks/level0/qt-macros.cpp +@@ -44,7 +44,7 @@ void QtMacros::VisitMacroDefined(const Token &MacroNameTok) + return; + + IdentifierInfo *ii = MacroNameTok.getIdentifierInfo(); +- if (ii && clazy::startsWith(ii->getName(), "Q_OS_")) ++ if (ii && clazy::startsWith(static_cast(ii->getName()), "Q_OS_")) + m_OSMacroExists = true; + } + +@@ -58,7 +58,7 @@ void QtMacros::checkIfDef(const Token ¯oNameTok, SourceLocation Loc) + if (preProcessorVisitor && preProcessorVisitor->qtVersion() < 51204 && ii->getName() == "Q_OS_WINDOWS") { + // Q_OS_WINDOWS was introduced in 5.12.4 + emitWarning(Loc, "Q_OS_WINDOWS was only introduced in Qt 5.12.4, use Q_OS_WIN instead"); +- } else if (!m_OSMacroExists && clazy::startsWith(ii->getName(), "Q_OS_")) { ++ } else if (!m_OSMacroExists && clazy::startsWith(static_cast(ii->getName()), "Q_OS_")) { + emitWarning(Loc, "Include qglobal.h before testing Q_OS_ macros"); + } + } +diff --git a/src/checks/level0/unused-non-trivial-variable.cpp b/src/checks/level0/unused-non-trivial-variable.cpp +index 4e4b8303..93815f27 100644 +--- a/src/checks/level0/unused-non-trivial-variable.cpp ++++ b/src/checks/level0/unused-non-trivial-variable.cpp +@@ -91,7 +91,7 @@ bool UnusedNonTrivialVariable::isUninterestingType(const CXXRecordDecl *record) + static const vector blacklistedTemplates = { "QScopedPointer", "QSetValueOnDestroy", "QScopedValueRollback" }; + StringRef className = clazy::name(record); + for (StringRef templateName : blacklistedTemplates) { +- if (clazy::startsWith(className, templateName)) ++ if (clazy::startsWith(static_cast(className), static_cast(templateName))) + return true; + } + +diff --git a/src/checks/level1/detaching-temporary.cpp b/src/checks/level1/detaching-temporary.cpp +index fedfc81c..60c75532 100644 +--- a/src/checks/level1/detaching-temporary.cpp ++++ b/src/checks/level1/detaching-temporary.cpp +@@ -140,7 +140,7 @@ void DetachingTemporary::VisitStmt(clang::Stmt *stm) + StringRef className = clazy::name(classDecl); + + const std::unordered_map> &methodsByType = clazy::detachingMethods(); +- auto it = methodsByType.find(className); ++ auto it = methodsByType.find(static_cast(className)); + auto it2 = m_writeMethodsByType.find(className); + + std::vector allowedFunctions; +diff --git a/src/checks/level1/non-pod-global-static.cpp b/src/checks/level1/non-pod-global-static.cpp +index 5879bff8..433b5c5f 100644 +--- a/src/checks/level1/non-pod-global-static.cpp ++++ b/src/checks/level1/non-pod-global-static.cpp +@@ -74,7 +74,7 @@ void NonPodGlobalStatic::VisitStmt(clang::Stmt *stm) + const SourceLocation declStart = clazy::getLocStart(varDecl); + + if (declStart.isMacroID()) { +- auto macroName = Lexer::getImmediateMacroName(declStart, sm(), lo()); ++ auto macroName = static_cast(Lexer::getImmediateMacroName(declStart, sm(), lo())); + if (clazy::startsWithAny(macroName, { "Q_IMPORT_PLUGIN", "Q_CONSTRUCTOR_FUNCTION", "Q_DESTRUCTOR_FUNCTION"})) // Don't warn on these + return; + } +diff --git a/src/checks/level1/qproperty-without-notify.cpp b/src/checks/level1/qproperty-without-notify.cpp +index e1d6db4a..3af9fee2 100644 +--- a/src/checks/level1/qproperty-without-notify.cpp ++++ b/src/checks/level1/qproperty-without-notify.cpp +@@ -69,7 +69,7 @@ void QPropertyWithoutNotify::VisitMacroExpands(const clang::Token &MacroNameTok, + return; + CharSourceRange crange = Lexer::getAsCharRange(range, sm(), lo()); + +- string text = Lexer::getSourceText(crange, sm(), lo()); ++ string text = static_cast(Lexer::getSourceText(crange, sm(), lo())); + if (text.back() == ')') + text.pop_back(); + +diff --git a/src/checks/level2/missing-typeinfo.cpp b/src/checks/level2/missing-typeinfo.cpp +index 98df2cd4..03b44e06 100644 +--- a/src/checks/level2/missing-typeinfo.cpp ++++ b/src/checks/level2/missing-typeinfo.cpp +@@ -74,7 +74,7 @@ void MissingTypeInfo::VisitDecl(clang::Decl *decl) + if (sm().isInSystemHeader(clazy::getLocStart(record))) + return; + +- std::string typeName = clazy::name(record); ++ std::string typeName = static_cast(clazy::name(record)); + if (typeName == "QPair") // QPair doesn't use Q_DECLARE_TYPEINFO, but rather a explicit QTypeInfo. + return; + +diff --git a/src/checks/level2/old-style-connect.cpp b/src/checks/level2/old-style-connect.cpp +index 0fe68c13..396cb703 100644 +--- a/src/checks/level2/old-style-connect.cpp ++++ b/src/checks/level2/old-style-connect.cpp +@@ -274,7 +274,7 @@ void OldStyleConnect::VisitMacroExpands(const Token ¯oNameTok, const SourceR + return; + + auto charRange = Lexer::getAsCharRange(range, sm(), lo()); +- const string text = Lexer::getSourceText(charRange, sm(), lo()); ++ const string text = static_cast(Lexer::getSourceText(charRange, sm(), lo())); + + static regex rx(R"(Q_PRIVATE_SLOT\s*\((.*)\s*,\s*.*\s+(.*)\(.*)"); + smatch match; +@@ -293,7 +293,7 @@ string OldStyleConnect::signalOrSlotNameFromMacro(SourceLocation macroLoc) + CharSourceRange expansionRange = clazy::getImmediateExpansionRange(macroLoc, sm()); + SourceRange range = SourceRange(expansionRange.getBegin(), expansionRange.getEnd()); + auto charRange = Lexer::getAsCharRange(range, sm(), lo()); +- const string text = Lexer::getSourceText(charRange, sm(), lo()); ++ const string text = static_cast(Lexer::getSourceText(charRange, sm(), lo())); + + static regex rx(R"(\s*(SIGNAL|SLOT)\s*\(\s*(.+)\s*\(.*)"); + +@@ -315,7 +315,7 @@ bool OldStyleConnect::isSignalOrSlot(SourceLocation loc, string ¯oName) cons + if (!loc.isMacroID() || loc.isInvalid()) + return false; + +- macroName = Lexer::getImmediateMacroName(loc, sm(), lo()); ++ macroName = static_cast(Lexer::getImmediateMacroName(loc, sm(), lo())); + return macroName == "SIGNAL" || macroName == "SLOT"; + } + +diff --git a/src/checks/level2/rule-of-three.cpp b/src/checks/level2/rule-of-three.cpp +index 8db55d53..7583fcc5 100644 +--- a/src/checks/level2/rule-of-three.cpp ++++ b/src/checks/level2/rule-of-three.cpp +@@ -140,7 +140,7 @@ void RuleOfThree::VisitDecl(clang::Decl *decl) + + const string className = record->getNameAsString(); + const string classQualifiedName = record->getQualifiedNameAsString(); +- const string filename = sm().getFilename(recordStart); ++ const string filename = static_cast(sm().getFilename(recordStart)); + if (clazy::endsWith(className, "Private") && clazy::endsWithAny(filename, { ".cpp", ".cxx", "_p.h" })) + return; // Lots of RAII classes fall into this category. And even Private (d-pointer) classes, warning in that case would just be noise + +diff --git a/src/checks/manuallevel/ifndef-define-typo.cpp b/src/checks/manuallevel/ifndef-define-typo.cpp +index edb6cdf4..e9c50a45 100644 +--- a/src/checks/manuallevel/ifndef-define-typo.cpp ++++ b/src/checks/manuallevel/ifndef-define-typo.cpp +@@ -44,7 +44,7 @@ void IfndefDefineTypo::VisitMacroDefined(const Token ¯oNameTok) + { + if (!m_lastIfndef.empty()) { + if (IdentifierInfo *ii = macroNameTok.getIdentifierInfo()) { +- maybeWarn(ii->getName(), macroNameTok.getLocation()); ++ maybeWarn(static_cast(ii->getName()), macroNameTok.getLocation()); + } + } + } +@@ -53,7 +53,7 @@ void IfndefDefineTypo::VisitDefined(const Token ¯oNameTok, const SourceRange + { + if (!m_lastIfndef.empty()) { + if (IdentifierInfo *ii = macroNameTok.getIdentifierInfo()) { +- maybeWarn(ii->getName(), macroNameTok.getLocation()); ++ maybeWarn(static_cast(ii->getName()), macroNameTok.getLocation()); + } + } + } +@@ -66,7 +66,7 @@ void IfndefDefineTypo::VisitIfdef(SourceLocation, const Token &) + void IfndefDefineTypo::VisitIfndef(SourceLocation, const Token ¯oNameTok) + { + if (IdentifierInfo *ii = macroNameTok.getIdentifierInfo()) +- m_lastIfndef = ii->getName(); ++ m_lastIfndef = static_cast(ii->getName()); + } + + void IfndefDefineTypo::VisitIf(SourceLocation, SourceRange, PPCallbacks::ConditionValueKind) +diff --git a/src/checks/manuallevel/qproperty-type-mismatch.cpp b/src/checks/manuallevel/qproperty-type-mismatch.cpp +index f91159cb..952d9f1d 100644 +--- a/src/checks/manuallevel/qproperty-type-mismatch.cpp ++++ b/src/checks/manuallevel/qproperty-type-mismatch.cpp +@@ -237,7 +237,7 @@ void QPropertyTypeMismatch::VisitMacroExpands(const clang::Token &MacroNameTok, + + CharSourceRange crange = Lexer::getAsCharRange(range, sm(), lo()); + +- string text = Lexer::getSourceText(crange, sm(), lo()); ++ string text = static_cast(Lexer::getSourceText(crange, sm(), lo())); + if (!text.empty() && text.back() == ')') + text.pop_back(); + +diff --git a/src/checks/manuallevel/qrequiredresult-candidates.cpp b/src/checks/manuallevel/qrequiredresult-candidates.cpp +index 912dbaa0..6375bd7b 100644 +--- a/src/checks/manuallevel/qrequiredresult-candidates.cpp ++++ b/src/checks/manuallevel/qrequiredresult-candidates.cpp +@@ -65,7 +65,7 @@ void QRequiredResultCandidates::VisitDecl(clang::Decl *decl) + + + if (returnClass == classDecl) { +- const std::string methodName = clazy::name(method); ++ const std::string methodName = static_cast(clazy::name(method)); + if (methodName.empty()) // fixes assert + return; + +diff --git a/src/checks/manuallevel/qt-keywords.cpp b/src/checks/manuallevel/qt-keywords.cpp +index e792e95a..b60752c9 100644 +--- a/src/checks/manuallevel/qt-keywords.cpp ++++ b/src/checks/manuallevel/qt-keywords.cpp +@@ -59,12 +59,12 @@ void QtKeywords::VisitMacroExpands(const Token ¯oNameTok, const SourceRange + } + + static const vector keywords = { "foreach", "signals", "slots", "emit" }; +- std::string name = ii->getName(); ++ std::string name = static_cast(ii->getName()); + if (!clazy::contains(keywords, name)) + return; + + // Make sure the macro is Qt's. It must be defined in Qt's headers, not 3rdparty +- std::string qtheader = sm().getFilename(sm().getSpellingLoc(minfo->getDefinitionLoc())); ++ std::string qtheader = static_cast(sm().getFilename(sm().getSpellingLoc(minfo->getDefinitionLoc()))); + if (!clazy::endsWith(qtheader, "qglobal.h") && !clazy::endsWith(qtheader, "qobjectdefs.h")) + return; + +diff --git a/src/checks/manuallevel/reserve-candidates.cpp b/src/checks/manuallevel/reserve-candidates.cpp +index 389cac5a..92e4491c 100644 +--- a/src/checks/manuallevel/reserve-candidates.cpp ++++ b/src/checks/manuallevel/reserve-candidates.cpp +@@ -78,7 +78,8 @@ static bool isCandidateMethod(CXXMethodDecl *methodDecl) + if (!classDecl) + return false; + +- if (!clazy::equalsAny(clazy::name(methodDecl), { "append", "push_back", "push", "operator<<", "operator+=" })) ++ if (!clazy::equalsAny(static_cast(clazy::name(methodDecl)), ++ { "append", "push_back", "push", "operator<<", "operator+=" })) + return false; + + if (!clazy::isAReserveClass(classDecl)) +-- +GitLab + diff --git a/srcpkgs/clazy/files/clazy-002-llvm11-stringref.patch b/srcpkgs/clazy/files/clazy-002-llvm11-stringref.patch new file mode 100644 index 00000000000..28cbb60b091 --- /dev/null +++ b/srcpkgs/clazy/files/clazy-002-llvm11-stringref.patch @@ -0,0 +1,28 @@ +From 25aa102cc49def9573ffbed88155589cd60a2e8f Mon Sep 17 00:00:00 2001 +From: Egor Gabov +Date: Fri, 5 Jun 2020 16:52:53 +0300 +Subject: [PATCH] updated for compatibility with LLVM 10 (clazy-standalone) + +In LLVM 10 llvm::StringRef operator std::string() is marked as explicit. +In this commit all implicit conversion from llvm::StringRef to +std::string are changed by explicit. +--- + src/checks/manuallevel/jnisignatures.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/checks/manuallevel/jnisignatures.cpp b/src/checks/manuallevel/jnisignatures.cpp +index 81e61d48..5d4fe203 100644 +--- a/src/checks/manuallevel/jnisignatures.cpp ++++ b/src/checks/manuallevel/jnisignatures.cpp +@@ -103,7 +103,7 @@ void JniSignatures::checkFunctionCall(Stmt *stm) + return; + } + +- const std::string name = clazy::name(funDecl); ++ const std::string name = static_cast(clazy::name(funDecl)); + + if (name == "callObjectMethod" || name == "callMethod") { + checkArgAt(callExpr, 0, methodNameRegex, "Invalid method name"); +-- +GitLab + diff --git a/srcpkgs/clazy/template b/srcpkgs/clazy/template index 4d8557be669..5af2b918e14 100644 --- a/srcpkgs/clazy/template +++ b/srcpkgs/clazy/template @@ -1,7 +1,7 @@ # Template file for 'clazy' pkgname=clazy version=1.7 -revision=1 +revision=2 build_style=cmake hostmakedepends="python" makedepends="clang llvm" @@ -12,3 +12,9 @@ homepage="https://cgit.kde.org/clazy.git/about/" distfiles="${KDE_SITE}/clazy/${version}/src/${pkgname}-${version}.tar.xz" checksum=754da5815f769dd6b72a040a2430525c93f294eb7769c78271603df9614f1b21 nocross="Clang cannot be installed as makedep" + +post_extract() { + for i in ${FILESDIR}/clazy-*.patch; do + patch -sNp1 -i ${i} + done +} From 707f6512d487fee86031eb7e189df1eccc27e175 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 15:19:37 +0100 Subject: [PATCH 20/22] include-what-you-use: rebuild for llvm11 --- ...de-what-you-use-001-llvm11-stringref.patch | 146 ++++++++++++++++++ ...ude-what-you-use-002-clang-astdumper.patch | 54 +++++++ srcpkgs/include-what-you-use/template | 8 +- 3 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/include-what-you-use/files/include-what-you-use-001-llvm11-stringref.patch create mode 100644 srcpkgs/include-what-you-use/files/include-what-you-use-002-clang-astdumper.patch diff --git a/srcpkgs/include-what-you-use/files/include-what-you-use-001-llvm11-stringref.patch b/srcpkgs/include-what-you-use/files/include-what-you-use-001-llvm11-stringref.patch new file mode 100644 index 00000000000..171dca28e34 --- /dev/null +++ b/srcpkgs/include-what-you-use/files/include-what-you-use-001-llvm11-stringref.patch @@ -0,0 +1,146 @@ +From 53487d209729d5781007dc0fd6076dc585cb3727 Mon Sep 17 00:00:00 2001 +From: Andrea Bocci +Date: Fri, 28 Feb 2020 17:45:03 +0100 +Subject: [PATCH] Add explicit conversion from llvm::StringRef to std::string + +llvm/llvm-project@777180a makes the llvm::StringRef conversion operator +to std::string explicit. +These changes add a call to the str() method to perform the conversion. + +Signed-off-by: Andrea Bocci +--- + iwyu_driver.cc | 2 +- + iwyu_globals.cc | 4 ++-- + iwyu_lexer_utils.cc | 2 +- + iwyu_location_util.h | 2 +- + iwyu_output.cc | 2 +- + iwyu_path_util.cc | 6 +++--- + iwyu_preprocessor.cc | 4 ++-- + 7 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/iwyu_driver.cc b/iwyu_driver.cc +index bd163144..42fea35b 100644 +--- a/iwyu_driver.cc ++++ b/iwyu_driver.cc +@@ -79,7 +79,7 @@ std::string GetExecutablePath(const char *Argv0) { + } + + const char *SaveStringInSet(std::set &SavedStrings, StringRef S) { +- return SavedStrings.insert(S).first->c_str(); ++ return SavedStrings.insert(S.str()).first->c_str(); + } + + void ExpandArgsFromBuf(const char *Arg, +diff --git a/iwyu_globals.cc b/iwyu_globals.cc +index 0f58b4dc..26998966 100644 +--- a/iwyu_globals.cc ++++ b/iwyu_globals.cc +@@ -293,7 +293,7 @@ static vector ComputeHeaderSearchPaths( + for (auto it = header_search->system_dir_begin(); + it != header_search->system_dir_end(); ++it) { + if (const DirectoryEntry* entry = it->getDir()) { +- const string path = NormalizeDirPath(MakeAbsolutePath(entry->getName())); ++ const string path = NormalizeDirPath(MakeAbsolutePath(entry->getName().str())); + search_path_map[path] = HeaderSearchPath::kSystemPath; + } + } +@@ -303,7 +303,7 @@ static vector ComputeHeaderSearchPaths( + // search_dir_begin()/end() includes both system and user paths. + // If it's a system path, it's already in the map, so everything + // new is a user path. The insert only 'takes' for new entries. +- const string path = NormalizeDirPath(MakeAbsolutePath(entry->getName())); ++ const string path = NormalizeDirPath(MakeAbsolutePath(entry->getName().str())); + search_path_map.insert(make_pair(path, HeaderSearchPath::kUserPath)); + } + } +diff --git a/iwyu_lexer_utils.cc b/iwyu_lexer_utils.cc +index fcea2d28..648c9da8 100644 +--- a/iwyu_lexer_utils.cc ++++ b/iwyu_lexer_utils.cc +@@ -70,7 +70,7 @@ SourceLocation GetLocationAfter( + string GetIncludeNameAsWritten( + SourceLocation include_loc, + const CharacterDataGetterInterface& data_getter) { +- const string data = GetSourceTextUntilEndOfLine(include_loc, data_getter); ++ const string data = GetSourceTextUntilEndOfLine(include_loc, data_getter).str(); + if (data.empty()) + return data; + string::size_type endpos = string::npos; +diff --git a/iwyu_location_util.h b/iwyu_location_util.h +index 3892a424..6f8cf81c 100644 +--- a/iwyu_location_util.h ++++ b/iwyu_location_util.h +@@ -89,7 +89,7 @@ bool IsInScratchSpace(clang::SourceLocation loc); + + inline string GetFilePath(const clang::FileEntry* file) { + return (IsBuiltinFile(file) ? "" : +- NormalizeFilePath(file->getName())); ++ NormalizeFilePath(file->getName().str())); + } + + //------------------------------------------------------------ +diff --git a/iwyu_output.cc b/iwyu_output.cc +index ca145710..8666c26c 100644 +--- a/iwyu_output.cc ++++ b/iwyu_output.cc +@@ -168,7 +168,7 @@ string GetKindName(const clang::TagDecl* tag_decl) { + if (const FakeNamedDecl* fake = FakeNamedDeclIfItIsOne(named_decl)) { + return fake->kind_name(); + } +- return tag_decl->getKindName(); ++ return tag_decl->getKindName().str(); + } + + string GetQualifiedNameAsString(const clang::NamedDecl* named_decl) { +diff --git a/iwyu_path_util.cc b/iwyu_path_util.cc +index ab4fc800..9987ea47 100644 +--- a/iwyu_path_util.cc ++++ b/iwyu_path_util.cc +@@ -134,7 +134,7 @@ string NormalizeFilePath(const string& path) { + std::replace(normalized.begin(), normalized.end(), '\\', '/'); + #endif + +- return normalized.str(); ++ return normalized.str().str(); + } + + string NormalizeDirPath(const string& path) { +@@ -154,14 +154,14 @@ string MakeAbsolutePath(const string& path) { + std::error_code error = llvm::sys::fs::make_absolute(absolute_path); + CHECK_(!error); + +- return absolute_path.str(); ++ return absolute_path.str().str(); + } + + string MakeAbsolutePath(const string& base_path, const string& relative_path) { + llvm::SmallString<128> absolute_path(base_path); + llvm::sys::path::append(absolute_path, relative_path); + +- return absolute_path.str(); ++ return absolute_path.str().str(); + } + + string GetParentPath(const string& path) { +diff --git a/iwyu_preprocessor.cc b/iwyu_preprocessor.cc +index 58e78595..88b93144 100644 +--- a/iwyu_preprocessor.cc ++++ b/iwyu_preprocessor.cc +@@ -313,7 +313,7 @@ void IwyuPreprocessorInfo::ProcessHeadernameDirectivesInFile( + break; + } + const string filename = GetSourceTextUntilEndOfLine(current_loc, +- DefaultDataGetter()); ++ DefaultDataGetter()).str(); + // Use "" or <> based on where the file lives. + string quoted_private_include; + if (IsSystemIncludeFile(GetFilePath(current_loc))) +@@ -332,7 +332,7 @@ void IwyuPreprocessorInfo::ProcessHeadernameDirectivesInFile( + } + + string after_text = GetSourceTextUntilEndOfLine(current_loc, +- DefaultDataGetter()); ++ DefaultDataGetter()).str(); + const string::size_type close_brace_pos = after_text.find('}'); + if (close_brace_pos == string::npos) { + Warn(current_loc, "@headername directive missing a closing brace"); diff --git a/srcpkgs/include-what-you-use/files/include-what-you-use-002-clang-astdumper.patch b/srcpkgs/include-what-you-use/files/include-what-you-use-002-clang-astdumper.patch new file mode 100644 index 00000000000..663a883fa91 --- /dev/null +++ b/srcpkgs/include-what-you-use/files/include-what-you-use-002-clang-astdumper.patch @@ -0,0 +1,54 @@ +From 30549c6931972456d1e09ff5dbeecd258a8df72b Mon Sep 17 00:00:00 2001 +From: Kim Grasman +Date: Thu, 9 Jul 2020 18:47:56 +0200 +Subject: [PATCH] Implement Stmt printing with ASTDumper + +The Clang API changed in commit 473fbc90d1fbf17e so that Stmt::dump +takes an ASTContext instead of a SourceManager. + +Rather than wire a global ASTContext, reimplement PrintableStmt and +PrintStmt to duplicate the most trivial implementations not requiring +ASTContext. + +No functional change. +--- + iwyu_ast_util.cc | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/iwyu_ast_util.cc b/iwyu_ast_util.cc +index d3d4dd1f..b19a11fb 100644 +--- a/iwyu_ast_util.cc ++++ b/iwyu_ast_util.cc +@@ -25,6 +25,7 @@ + #include "llvm/Support/Casting.h" + #include "llvm/Support/raw_ostream.h" + #include "clang/AST/ASTContext.h" ++#include "clang/AST/ASTDumper.h" + #include "clang/AST/CanonicalType.h" + #include "clang/AST/Decl.h" + #include "clang/AST/DeclBase.h" +@@ -46,6 +47,7 @@ namespace clang { + class FileEntry; + } // namespace clang + ++using clang::ASTDumper; + using clang::BlockPointerType; + using clang::CXXConstructExpr; + using clang::CXXConstructorDecl; +@@ -450,12 +452,14 @@ string PrintableDecl(const Decl* decl, bool terse/*=true*/) { + string PrintableStmt(const Stmt* stmt) { + std::string buffer; + raw_string_ostream ostream(buffer); +- stmt->dump(ostream, *GlobalSourceManager()); ++ ASTDumper dumper(ostream, /*ShowColors=*/false); ++ dumper.Visit(stmt); + return ostream.str(); + } + + void PrintStmt(const Stmt* stmt) { +- stmt->dump(*GlobalSourceManager()); // This prints to errs(). ++ ASTDumper dumper(llvm::errs(), /*ShowColors=*/false); ++ dumper.Visit(stmt); + } + + string PrintableType(const Type* type) { diff --git a/srcpkgs/include-what-you-use/template b/srcpkgs/include-what-you-use/template index 22c9d09d091..3811309bdde 100644 --- a/srcpkgs/include-what-you-use/template +++ b/srcpkgs/include-what-you-use/template @@ -1,7 +1,7 @@ # Template file for 'include-what-you-use' pkgname=include-what-you-use version=0.14 -revision=1 +revision=2 wrksrc="${pkgname}" build_style=cmake configure_args="-DIWYU_LLVM_ROOT_PATH=${XBPS_CROSS_BASE}/usr " @@ -15,6 +15,12 @@ distfiles="https://include-what-you-use.org/downloads/${pkgname}-${version}.src. checksum=43184397db57660c32e3298a6b1fd5ab82e808a1f5ab0591d6745f8d256200ef python_version=3 +post_extract() { + for i in ${FILESDIR}/include-what-you-use-*.patch; do + patch -sNp1 -i ${i} + done +} + post_install() { vlicense LICENSE.TXT } From f932b52169f6a182b2e3645017e70bff9e00016c Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 16:17:54 +0100 Subject: [PATCH 21/22] bpftrace: update to 0.11.2 --- ...trace-001-six-args-bpf_attach_uprobe.patch | 126 +++++++++++++++ ...ace-002-seven-args-bpf_attach_uprobe.patch | 148 ++++++++++++++++++ srcpkgs/bpftrace/template | 10 +- 3 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/bpftrace/files/bpftrace-001-six-args-bpf_attach_uprobe.patch create mode 100644 srcpkgs/bpftrace/files/bpftrace-002-seven-args-bpf_attach_uprobe.patch diff --git a/srcpkgs/bpftrace/files/bpftrace-001-six-args-bpf_attach_uprobe.patch b/srcpkgs/bpftrace/files/bpftrace-001-six-args-bpf_attach_uprobe.patch new file mode 100644 index 00000000000..e2b1ad1351b --- /dev/null +++ b/srcpkgs/bpftrace/files/bpftrace-001-six-args-bpf_attach_uprobe.patch @@ -0,0 +1,126 @@ +From 52fb793c6423c19696e07cc14ad5f9182f7eca0e Mon Sep 17 00:00:00 2001 +From: Viktor Malik +Date: Wed, 12 Aug 2020 09:45:29 +0200 +Subject: [PATCH] Feature-detect bpf_attach_kprobe signature + +The function has 6 parameters in current versions of BCC and 5 +parameters in older versions. + +This is detected in CMake using CHECK_CXX_SOURCE_COMPILES. For static +compilation, we also need to retrieve and link static libbpf, libelf, +and libz. This may cause libbpf, libelf and libz to be searched for +twice, but it should be fine since CMake caches results. + +Fixes iovisor#1027. +--- + cmake/FindLibBcc.cmake | 24 ++++++++++++++++++++++++ + src/CMakeLists.txt | 3 +++ + src/attached_probe.cpp | 31 ++++++++++++++----------------- + tests/CMakeLists.txt | 3 +++ + 4 files changed, 44 insertions(+), 17 deletions(-) + +diff --git a/cmake/FindLibBcc.cmake b/cmake/FindLibBcc.cmake +index 9d30b04bc..ec216271d 100644 +--- a/cmake/FindLibBcc.cmake ++++ b/cmake/FindLibBcc.cmake +@@ -70,3 +70,27 @@ include (FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibBcc "Please install the bcc library package, which is required. Depending on your distro, it may be called bpfcclib or bcclib (Ubuntu), bcc-devel (Fedora), or something else. If unavailable, install bcc from source (github.com/iovisor/bcc)." + LIBBCC_LIBRARIES + LIBBCC_INCLUDE_DIRS) ++ ++# Check bpf_attach_kprobe signature ++if(${LIBBCC_FOUND}) ++if(STATIC_LINKING) ++ # libbcc.a is not statically linked with libbpf.a, libelf.a, and libz.a. ++ # If we do a static bpftrace build, we must link them in. ++ find_package(LibBpf) ++ find_package(LibElf) ++ find_package(LibZ) ++ SET(CMAKE_REQUIRED_LIBRARIES ${LIBBCC_BPF_LIBRARY_STATIC} ${LIBBPF_LIBRARIES} ${LIBELF_LIBRARIES} ${LIBZ_LIBRARIES}) ++else() ++ SET(CMAKE_REQUIRED_LIBRARIES ${LIBBCC_LIBRARIES}) ++endif() ++INCLUDE(CheckCXXSourceCompiles) ++CHECK_CXX_SOURCE_COMPILES(" ++#include ++ ++int main(void) { ++ bpf_attach_kprobe(0, BPF_PROBE_ENTRY, \"\", \"\", 0, 0); ++ return 0; ++} ++" LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) ++SET(CMAKE_REQUIRED_LIBRARIES) ++endif() +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 647a23f1c..448a045fc 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -80,6 +80,9 @@ if(HAVE_BFD_DISASM) + target_link_libraries(bpftrace ${LIBOPCODES_LIBRARIES}) + endif(STATIC_LINKING) + endif(HAVE_BFD_DISASM) ++if(LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) ++ target_compile_definitions(bpftrace PRIVATE LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) ++endif(LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) + + if (ALLOW_UNSAFE_PROBE) + target_compile_definitions(bpftrace PRIVATE HAVE_UNSAFE_PROBE) +diff --git a/src/attached_probe.cpp b/src/attached_probe.cpp +index 587a11576..afad9ed18 100644 +--- a/src/attached_probe.cpp ++++ b/src/attached_probe.cpp +@@ -754,26 +754,23 @@ void AttachedProbe::load_prog() + } + } + +-// XXX(mmarchini): bcc changed the signature of bpf_attach_kprobe, adding a new +-// int parameter at the end. Since there's no reliable way to feature-detect +-// this, we create a function pointer with the long signature and cast +-// bpf_attach_kprobe to this function pointer. If we're on an older bcc +-// version, bpf_attach_kprobe call will be augmented with an extra register +-// being used for the last parameter, even though this register won't be used +-// inside the function. Since the register won't be used this is kinda safe, +-// although not ideal. +-typedef int (*attach_probe_wrapper_signature)(int, enum bpf_probe_attach_type, const char*, const char*, uint64_t, int); +- + void AttachedProbe::attach_kprobe(bool safe_mode) + { + resolve_offset_kprobe(safe_mode); +- int perf_event_fd = cast_signature( +- &bpf_attach_kprobe)(progfd_, +- attachtype(probe_.type), +- eventname().c_str(), +- probe_.attach_point.c_str(), +- offset_, +- 0); ++#ifdef LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE ++ int perf_event_fd = bpf_attach_kprobe(progfd_, ++ attachtype(probe_.type), ++ eventname().c_str(), ++ probe_.attach_point.c_str(), ++ offset_, ++ 0); ++#else ++ int perf_event_fd = bpf_attach_kprobe(progfd_, ++ attachtype(probe_.type), ++ eventname().c_str(), ++ probe_.attach_point.c_str(), ++ offset_); ++#endif + + if (perf_event_fd < 0) { + if (probe_.orig_name != probe_.name) { +diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt +index 3688b8487..84daeb2aa 100644 +--- a/tests/CMakeLists.txt ++++ b/tests/CMakeLists.txt +@@ -102,6 +102,9 @@ if(HAVE_BFD_DISASM) + target_link_libraries(bpftrace_test ${LIBOPCODES_LIBRARIES}) + endif(STATIC_LINKING) + endif(HAVE_BFD_DISASM) ++if(LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) ++ target_compile_definitions(bpftrace_test PRIVATE LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) ++endif(LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) + + target_link_libraries(bpftrace_test arch ast parser resources) + diff --git a/srcpkgs/bpftrace/files/bpftrace-002-seven-args-bpf_attach_uprobe.patch b/srcpkgs/bpftrace/files/bpftrace-002-seven-args-bpf_attach_uprobe.patch new file mode 100644 index 00000000000..2cc55c86555 --- /dev/null +++ b/srcpkgs/bpftrace/files/bpftrace-002-seven-args-bpf_attach_uprobe.patch @@ -0,0 +1,148 @@ +From c7dbab451484b96178da1a8c43330154ce4c9d7a Mon Sep 17 00:00:00 2001 +From: Daniel Xu +Date: Wed, 14 Oct 2020 17:09:46 -0700 +Subject: [PATCH] Detect 7 arg bpf_attach_uprobe() API + +The 7th arg allows us to specify the usdt semaphore location. +--- + cmake/FindLibBcc.cmake | 11 +++++++++++ + src/CMakeLists.txt | 3 +++ + src/attached_probe.cpp | 42 ++++++++++++++++++++++++++++++++++-------- + src/main.cpp | 6 ++++++ + tests/CMakeLists.txt | 3 +++ + 5 files changed, 57 insertions(+), 8 deletions(-) + +diff --git a/cmake/FindLibBcc.cmake b/cmake/FindLibBcc.cmake +index 4c09a8ca2..92cedab5e 100644 +--- a/cmake/FindLibBcc.cmake ++++ b/cmake/FindLibBcc.cmake +@@ -7,6 +7,8 @@ + # LIBBCC_DEFINITIONS - Compiler switches required for using libbcc + # LIBBCC_BPF_LIBRARY_STATIC - libbpf static library (for static compilation) + # LIBBCC_LOADER_LIBRARY_STATIC - libbcc helper static library (for static compilation) ++# LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE ++# LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE + # + # Note that the shared libbcc binary has libbpf and bcc_loader already compiled in but + # the static doesn't. So when creating a static build those have to be included too. +@@ -94,6 +96,15 @@ int main(void) { + return 0; + } + " LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) ++ ++CHECK_CXX_SOURCE_COMPILES(" ++#include ++ ++int main(void) { ++ bpf_attach_uprobe(0, BPF_PROBE_ENTRY, \"\", \"\", 0, 0, 0); ++ return 0; ++} ++" LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) + SET(CMAKE_REQUIRED_LIBRARIES) + SET(CMAKE_REQUIRED_INCLUDES) + endif() +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 9162356e3..cef94d144 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -88,6 +88,9 @@ endif(HAVE_BFD_DISASM) + if(LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) + target_compile_definitions(bpftrace PRIVATE LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) + endif(LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) ++if(LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) ++ target_compile_definitions(bpftrace PRIVATE LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) ++endif(LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) + + if (ALLOW_UNSAFE_PROBE) + target_compile_definitions(bpftrace PRIVATE HAVE_UNSAFE_PROBE) +diff --git a/src/attached_probe.cpp b/src/attached_probe.cpp +index 93fbfa876..a5d8bc56d 100644 +--- a/src/attached_probe.cpp ++++ b/src/attached_probe.cpp +@@ -698,12 +698,23 @@ void AttachedProbe::attach_uprobe(bool safe_mode) + { + resolve_offset_uprobe(safe_mode); + +- int perf_event_fd = bpf_attach_uprobe(progfd_, +- attachtype(probe_.type), +- eventname().c_str(), +- probe_.path.c_str(), +- offset_, +- probe_.pid); ++ int perf_event_fd = ++#ifdef LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE ++ bpf_attach_uprobe(progfd_, ++ attachtype(probe_.type), ++ eventname().c_str(), ++ probe_.path.c_str(), ++ offset_, ++ probe_.pid, ++ 0); ++#else ++ bpf_attach_uprobe(progfd_, ++ attachtype(probe_.type), ++ eventname().c_str(), ++ probe_.path.c_str(), ++ offset_, ++ probe_.pid); ++#endif // LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE + + if (perf_event_fd < 0) + throw std::runtime_error("Error attaching probe: " + probe_.name); +@@ -812,8 +823,23 @@ void AttachedProbe::attach_usdt(int pid) + + offset_ = resolve_offset(probe_.path, probe_.attach_point, probe_.loc); + +- int perf_event_fd = bpf_attach_uprobe(progfd_, attachtype(probe_.type), +- eventname().c_str(), probe_.path.c_str(), offset_, pid == 0 ? -1 : pid); ++ int perf_event_fd = ++#ifdef LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE ++ bpf_attach_uprobe(progfd_, ++ attachtype(probe_.type), ++ eventname().c_str(), ++ probe_.path.c_str(), ++ offset_, ++ pid == 0 ? -1 : pid, ++ 0); ++#else ++ bpf_attach_uprobe(progfd_, ++ attachtype(probe_.type), ++ eventname().c_str(), ++ probe_.path.c_str(), ++ offset_, ++ pid == 0 ? -1 : pid); ++#endif // LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE + + if (perf_event_fd < 0) + { +diff --git a/src/main.cpp b/src/main.cpp +index 48fcf5aa0..09f4d9677 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -162,6 +162,12 @@ static int info() + << "yes" << std::endl; + #else + << "no" << std::endl; ++#endif ++ std::cerr << " bcc bpf_attach_uprobe refcount: " ++#ifdef LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE ++ << "yes" << std::endl; ++#else ++ << "no" << std::endl; + #endif + std::cerr << " libbpf: " + #ifdef HAVE_LIBBPF +diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt +index ace5ff106..332eba2b5 100644 +--- a/tests/CMakeLists.txt ++++ b/tests/CMakeLists.txt +@@ -116,6 +116,9 @@ endif(HAVE_BFD_DISASM) + if(LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) + target_compile_definitions(bpftrace_test PRIVATE LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) + endif(LIBBCC_ATTACH_KPROBE_SIX_ARGS_SIGNATURE) ++if(LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) ++ target_compile_definitions(bpftrace_test PRIVATE LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) ++endif(LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) + + target_link_libraries(bpftrace_test arch ast parser resources) + diff --git a/srcpkgs/bpftrace/template b/srcpkgs/bpftrace/template index d8367fa5c03..44e6c174107 100644 --- a/srcpkgs/bpftrace/template +++ b/srcpkgs/bpftrace/template @@ -1,6 +1,6 @@ # Template file for 'bpftrace' pkgname=bpftrace -version=0.11.1 +version=0.11.2 revision=1 archs="x86_64* aarch64* ppc64*" build_style=cmake @@ -12,7 +12,13 @@ maintainer="Leah Neukirchen " license="Apache-2.0" homepage="https://github.com/iovisor/bpftrace/" distfiles="https://github.com/iovisor/bpftrace/archive/v${version}.tar.gz" -checksum=98efc9396451bc1a4f73378cec4755e07e7718cb5d698472606f5ffc2b9e48e8 +checksum=1f0fc30073547e3b285e1a373aa469bb18d3ba27f8c05f91016df0ca84f77f90 + +post_extract() { + for i in ${FILESDIR}/bpftrace-*.patch; do + patch -sNp1 -i ${i} + done +} post_install() { # clashes with bcc-tools From 33c9bc04ccf3d1af0e58db890dc8d6c9443d0324 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Mon, 9 Nov 2020 19:29:15 +0100 Subject: [PATCH 22/22] beignet: rebuild for llvm11 --- srcpkgs/beignet/patches/llvm11.patch | 945 +++++++++++++++++++++++++++ srcpkgs/beignet/template | 2 +- 2 files changed, 946 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/beignet/patches/llvm11.patch diff --git a/srcpkgs/beignet/patches/llvm11.patch b/srcpkgs/beignet/patches/llvm11.patch new file mode 100644 index 00000000000..9f328267698 --- /dev/null +++ b/srcpkgs/beignet/patches/llvm11.patch @@ -0,0 +1,945 @@ +Source: Snektron + +There were a few changes required for LLVM 11: +* llvm::StringRef requires .str(), implicit conversion was removed +* llvm::CallSite was removed, but the required methods are available on llvm::CallInst +* VectorTyID was split into FixedVectorTyID and ScalableVectorTyID, FixedVectorTyID was used +* CallInst::getCalledValue() was renamed to CallInst::getCalledOperand() +* Implicit conversion from MaybeAlign to Align was removed, so MaybeAlign::valueOrOne was used instead. + +--- backend/src/llvm/StripAttributes.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/StripAttributes.cpp 2020-11-09 19:04:19.641897141 +0100 +@@ -107,9 +107,8 @@ + BB != E; ++BB) { + for (BasicBlock::iterator Inst = BB->begin(), E = BB->end(); + Inst != E; ++Inst) { +- CallSite Call(&*Inst); +- if (Call) +- Call.setCallingConv(CallingConv::C); ++ if (CallInst* callInst = dyn_cast(&*Inst)) ++ callInst->setCallingConv(CallingConv::C); + } + } + +--- backend/src/llvm/llvm_bitcode_link.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_bitcode_link.cpp 2020-11-09 17:04:09.633753428 +0100 +@@ -98,7 +98,7 @@ + if (callFunc && callFunc->getIntrinsicID() != 0) + continue; + +- std::string fnName = call->getCalledValue()->stripPointerCasts()->getName(); ++ std::string fnName = call->getCalledOperand()->stripPointerCasts()->getName().str(); + + if (!MFS.insert(fnName).second) { + continue; +--- backend/src/llvm/llvm_device_enqueue.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_device_enqueue.cpp 2020-11-09 19:01:49.201915008 +0100 +@@ -45,7 +45,7 @@ + return NULL; + + /* This is a fake, to check the function bitcast is for block or not */ +- std::string fnName = Fn->getName(); ++ std::string fnName = Fn->getName().str(); + if(fnName.find("_invoke") == std::string::npos) + return NULL; + +@@ -119,18 +119,18 @@ + ParamTys.push_back(ty); + } + FunctionType* NewFT = FunctionType::get(Fn->getReturnType(), ParamTys, false); +- Function* NewFn = Function::Create(NewFT, Function::ExternalLinkage, Fn->getName()); ++ Function* NewFn = Function::Create(NewFT, Function::ExternalLinkage, Fn->getName().str()); + SmallVector Returns; + + Function::arg_iterator NewFnArgIt = NewFn->arg_begin(); + for (Function::arg_iterator I = Fn->arg_begin(), E = Fn->arg_end(); I != E; ++I) { +- std::string ArgName = I->getName(); ++ std::string ArgName = I->getName().str(); + NewFnArgIt->setName(ArgName); + VMap[&*I] = &(*NewFnArgIt++); + } + CloneFunctionInto(NewFn, Fn, VMap, /*ModuleLevelChanges=*/true, Returns); + +- Fn->setName("__d" + Fn->getName()); ++ Fn->setName("__d" + Fn->getName().str()); + mod->getFunctionList().push_back(NewFn); + //mod->getOrInsertFunction(NewFn->getName(), NewFn->getFunctionType(), + // NewFn->getAttributes()); +@@ -147,7 +147,7 @@ + argTypeNames.push_back(llvm::MDString::get(Context, "char*")); + argBaseTypeNames.push_back(llvm::MDString::get(Context, "char*")); + argTypeQuals.push_back(llvm::MDString::get(Context, "")); +- argNames.push_back(llvm::MDString::get(Context, I->getName())); ++ argNames.push_back(llvm::MDString::get(Context, I->getName().str())); + } + + //If run to here, llvm version always > 3.9, add the version check just for build. +@@ -198,7 +198,7 @@ + * invoke pointer to store the index in the unit's block functions index.*/ + Function *Fn = dyn_cast(bt->getOperand(0)); + +- std::string fnName = Fn->getName(); ++ std::string fnName = Fn->getName().str(); + int index = -1; + for(size_t i=0; i args(CI->op_begin(), CI->op_end()-1); + +- Value *v = CI->getCalledValue(); ++ Value *v = CI->getCalledOperand(); + BitCastInst* bt = dyn_cast(v); + if(bt == NULL) + continue; +@@ -316,7 +316,7 @@ + ConstantExpr *expr = dyn_cast(c->getOperand(3)); + BitCastInst *bt = dyn_cast(expr->getAsInstruction()); + Function* f = dyn_cast(bt->getOperand(0)); +- blocks[v] = f->getName(); ++ blocks[v] = f->getName().str(); + } + } + +@@ -332,7 +332,7 @@ + } else { + //handle enqueue_kernel function call + Function *fn = CI->getCalledFunction(); +- if (fn->getName().find("enqueue_kernel") == std::string::npos) ++ if (fn->getName().str().find("enqueue_kernel") == std::string::npos) + continue; + + //block parameter's index, 3 or 6 +@@ -361,7 +361,7 @@ + ConstantExpr *expr = dyn_cast(c->getOperand(3)); + BitCastInst *bt = dyn_cast(expr->getAsInstruction()); + Function* f = dyn_cast(bt->getOperand(0)); +- blocks[v] = f->getName(); ++ blocks[v] = f->getName().str(); + } + } + } else if(isa(block)) { +--- backend/src/llvm/llvm_gen_backend.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_gen_backend.cpp 2020-11-09 18:33:50.919114327 +0100 +@@ -376,7 +376,7 @@ + GBE_ASSERT(index == 0); + return this->_newScalar(value, key, type, index, uniform); + break; +- case Type::VectorTyID: ++ case Type::FixedVectorTyID: + { + auto vectorType = cast(type); + auto elementType = vectorType->getElementType(); +@@ -743,20 +743,20 @@ + #undef DECL_VISIT_FN + + // Emit rounding instructions from gen native function +- void emitRoundingCallInst(CallInst &I, CallSite &CS, ir::Opcode opcode); ++ void emitRoundingCallInst(CallInst &I, ir::Opcode opcode); + // Emit unary instructions from gen native function +- void emitUnaryCallInst(CallInst &I, CallSite &CS, ir::Opcode opcode, ir::Type = ir::TYPE_FLOAT); ++ void emitUnaryCallInst(CallInst &I, ir::Opcode opcode, ir::Type = ir::TYPE_FLOAT); + // Emit unary instructions from gen native function +- void emitAtomicInst(CallInst &I, CallSite &CS, ir::AtomicOps opcode); ++ void emitAtomicInst(CallInst &I, ir::AtomicOps opcode); + // Emit workgroup instructions +- void emitWorkGroupInst(CallInst &I, CallSite &CS, ir::WorkGroupOps opcode); ++ void emitWorkGroupInst(CallInst &I, ir::WorkGroupOps opcode); + // Emit subgroup instructions +- void emitSubGroupInst(CallInst &I, CallSite &CS, ir::WorkGroupOps opcode); ++ void emitSubGroupInst(CallInst &I, ir::WorkGroupOps opcode); + // Emit subgroup instructions +- void emitBlockReadWriteMemInst(CallInst &I, CallSite &CS, bool isWrite, uint8_t vec_size, ir::Type = ir::TYPE_U32); +- void emitBlockReadWriteImageInst(CallInst &I, CallSite &CS, bool isWrite, uint8_t vec_size, ir::Type = ir::TYPE_U32); ++ void emitBlockReadWriteMemInst(CallInst &I, bool isWrite, uint8_t vec_size, ir::Type = ir::TYPE_U32); ++ void emitBlockReadWriteImageInst(CallInst &I, bool isWrite, uint8_t vec_size, ir::Type = ir::TYPE_U32); + +- uint8_t appendSampler(CallSite::arg_iterator AI); ++ uint8_t appendSampler(User::op_iterator AI); + uint8_t getImageID(CallInst &I); + + // These instructions are not supported at all +@@ -1320,13 +1320,13 @@ + #endif + + if(typeNameNode) { +- llvmInfo.typeName= (cast(typeNameNode->getOperand(opID)))->getString(); ++ llvmInfo.typeName= (cast(typeNameNode->getOperand(opID)))->getString().str(); + } + if(typeBaseNameNode) { +- llvmInfo.typeBaseName= (cast(typeBaseNameNode->getOperand(opID)))->getString(); ++ llvmInfo.typeBaseName= (cast(typeBaseNameNode->getOperand(opID)))->getString().str(); + } +- llvmInfo.typeName= (cast(typeNameNode->getOperand(opID)))->getString(); +- llvmInfo.typeQual = (cast(typeQualNode->getOperand(opID)))->getString(); ++ llvmInfo.typeName= (cast(typeNameNode->getOperand(opID)))->getString().str(); ++ llvmInfo.typeQual = (cast(typeQualNode->getOperand(opID)))->getString().str(); + bool isImage = llvmInfo.isImageType(); + bool isPipe = llvmInfo.isPipeType(); + if (I->getType()->isPointerTy() || isImage || isPipe) { +@@ -1531,7 +1531,7 @@ + EltTy = getEltType(EltTy, TypeIndex); + } + +- ir::Constant cc = unit.getConstantSet().getConstant(pointer->getName()); ++ ir::Constant cc = unit.getConstantSet().getConstant(pointer->getName().str()); + unsigned int defOffset = cc.getOffset(); + relocs.push_back(ir::RelocEntry(offset, defOffset + constantOffset)); + +@@ -1546,7 +1546,7 @@ + return; + } + if (isa(c)) { +- ir::Constant cc = unit.getConstantSet().getConstant(c->getName()); ++ ir::Constant cc = unit.getConstantSet().getConstant(c->getName().str()); + unsigned int defOffset = cc.getOffset(); + + relocs.push_back(ir::RelocEntry(offset, defOffset)); +@@ -1609,7 +1609,7 @@ + } + break; + } +- case Type::TypeID::VectorTyID: ++ case Type::TypeID::FixedVectorTyID: + { + const ConstantDataSequential *cds = dyn_cast(c); + const VectorType *vecTy = cast(type); +@@ -1936,7 +1936,7 @@ + case Type::PointerTyID: + regTranslator.newScalar(value, key, 0, uniform); + break; +- case Type::VectorTyID: ++ case Type::FixedVectorTyID: + { + auto vectorType = cast(type); + const uint32_t elemNum = vectorType->getNumElements(); +@@ -2395,7 +2395,7 @@ + #endif + } + if(typeNameNode) { +- llvmInfo.typeName = (cast(typeNameNode->getOperand(opID)))->getString(); ++ llvmInfo.typeName = (cast(typeNameNode->getOperand(opID)))->getString().str(); + //LLVM 3.9 image's type name include access qual, don't match OpenCL spec, erase them. + std::vector filters = {"__read_only ", "__write_only "}; + for (uint32_t i = 0; i < filters.size(); i++) { +@@ -2406,16 +2406,16 @@ + } + } + if(typeBaseNameNode){ +- llvmInfo.typeBaseName = (cast(typeBaseNameNode->getOperand(opID)))->getString(); ++ llvmInfo.typeBaseName = (cast(typeBaseNameNode->getOperand(opID)))->getString().str(); + } + if(accessQualNode) { +- llvmInfo.accessQual = (cast(accessQualNode->getOperand(opID)))->getString(); ++ llvmInfo.accessQual = (cast(accessQualNode->getOperand(opID)))->getString().str(); + } + if(typeQualNode) { +- llvmInfo.typeQual = (cast(typeQualNode->getOperand(opID)))->getString(); ++ llvmInfo.typeQual = (cast(typeQualNode->getOperand(opID)))->getString().str(); + } + if(argNameNode){ +- llvmInfo.argName = (cast(argNameNode->getOperand(opID)))->getString(); ++ llvmInfo.argName = (cast(argNameNode->getOperand(opID)))->getString().str(); + } + + // function arguments are uniform values. +@@ -3010,7 +3010,7 @@ + } else { + this->newRegister(const_cast(&v)); + ir::Register reg = regTranslator.getScalar(const_cast(&v), 0); +- ir::Constant &con = unit.getConstantSet().getConstant(v.getName()); ++ ir::Constant &con = unit.getConstantSet().getConstant(v.getName().str()); + if (!legacyMode) { + ir::Register regload = ctx.reg(getFamily(getType(ctx, v.getType()))); + ctx.LOADI(getType(ctx, v.getType()), regload, ctx.newIntegerImmediate(con.getOffset(), getType(ctx, v.getType()))); +@@ -3212,7 +3212,7 @@ + GBE_ASSERTM(false, "Unsupported calling convention"); + } + +- ctx.startFunction(F.getName()); ++ ctx.startFunction(F.getName().str()); + + ir::Function &fn = ctx.getFunction(); + this->regTranslator.clear(); +@@ -3810,9 +3810,9 @@ + + void GenWriter::regAllocateCallInst(CallInst &I) { + Value *dst = &I; +- Value *Callee = I.getCalledValue(); ++ Value *Callee = I.getCalledOperand(); + GBE_ASSERT(ctx.getFunction().getProfile() == ir::PROFILE_OCL); +- GBE_ASSERT(isa(I.getCalledValue()) == false); ++ GBE_ASSERT(isa(I.getCalledOperand()) == false); + if(I.getNumArgOperands()) GBE_ASSERT(I.hasStructRetAttr() == false); + + // We only support a small number of intrinsics right now +@@ -3870,7 +3870,7 @@ + } + } + // Get the name of the called function and handle it +- const std::string fnName = Callee->stripPointerCasts()->getName(); ++ const std::string fnName = Callee->stripPointerCasts()->getName().str(); + auto genIntrinsicID = intrinsicMap.find(fnName); + switch (genIntrinsicID) { + case GEN_OCL_GET_GROUP_ID0: +@@ -4166,7 +4166,7 @@ + }; + } + +- void GenWriter::emitRoundingCallInst(CallInst &I, CallSite &CS, ir::Opcode opcode) { ++ void GenWriter::emitRoundingCallInst(CallInst &I, ir::Opcode opcode) { + if (I.getType()->isHalfTy()) { + const ir::Register src = this->getRegister(I.getOperand(0)); + const ir::Register srcFloat = ctx.reg(ir::FAMILY_DWORD); +@@ -4177,14 +4177,14 @@ + ctx.F32TO16(ir::TYPE_U16, ir::TYPE_FLOAT, dst, dstFloat); + } else { + GBE_ASSERT(I.getType()->isFloatTy()); +- this->emitUnaryCallInst(I,CS,opcode); ++ this->emitUnaryCallInst(I,opcode); + } + } + +- void GenWriter::emitUnaryCallInst(CallInst &I, CallSite &CS, ir::Opcode opcode, ir::Type type) { +- CallSite::arg_iterator AI = CS.arg_begin(); ++ void GenWriter::emitUnaryCallInst(CallInst &I, ir::Opcode opcode, ir::Type type) { ++ User::op_iterator AI = I.arg_begin(); + #if GBE_DEBUG +- CallSite::arg_iterator AE = CS.arg_end(); ++ User::op_iterator AE = I.arg_end(); + #endif /* GBE_DEBUG */ + GBE_ASSERT(AI != AE); + const ir::Register src = this->getRegister(*AI); +@@ -4293,9 +4293,9 @@ + this->emitAtomicInstHelper(opcode, type, dst, llvmPtr, payloadTuple); + } + +- void GenWriter::emitAtomicInst(CallInst &I, CallSite &CS, ir::AtomicOps opcode) { +- CallSite::arg_iterator AI = CS.arg_begin(); +- CallSite::arg_iterator AE = CS.arg_end(); ++ void GenWriter::emitAtomicInst(CallInst &I, ir::AtomicOps opcode) { ++ User::op_iterator AI = I.arg_begin(); ++ User::op_iterator AE = I.arg_end(); + GBE_ASSERT(AI != AE); + Value *llvmPtr = *AI; + ir::AddressSpace addrSpace = addressSpaceLLVMToGen(llvmPtr->getType()->getPointerAddressSpace()); +@@ -4348,7 +4348,7 @@ + } + } + +- void GenWriter::emitWorkGroupInst(CallInst &I, CallSite &CS, ir::WorkGroupOps opcode) { ++ void GenWriter::emitWorkGroupInst(CallInst &I, ir::WorkGroupOps opcode) { + ir::Function &f = ctx.getFunction(); + + if (f.getwgBroadcastSLM() < 0 && opcode == ir::WORKGROUP_OP_BROADCAST) { +@@ -4378,8 +4378,8 @@ + GBE_ASSERT(f.gettidMapSLM() >= 0); + } + +- CallSite::arg_iterator AI = CS.arg_begin(); +- CallSite::arg_iterator AE = CS.arg_end(); ++ User::op_iterator AI = I.arg_begin(); ++ User::op_iterator AE = I.arg_end(); + GBE_ASSERT(AI != AE); + + if (opcode == ir::WORKGROUP_OP_ALL || opcode == ir::WORKGROUP_OP_ANY) { +@@ -4391,14 +4391,14 @@ + const ir::Tuple srcTuple = ctx.arrayTuple(&src[0], 3); + ctx.WORKGROUP(opcode, (uint32_t)f.gettidMapSLM(), getRegister(&I), srcTuple, 3, ir::TYPE_S32); + } else if (opcode == ir::WORKGROUP_OP_BROADCAST) { +- int argNum = CS.arg_size(); ++ int argNum = I.arg_size(); + std::vector src(argNum); + for (int i = 0; i < argNum; i++) { + src[i] = this->getRegister(*(AI++)); + } + const ir::Tuple srcTuple = ctx.arrayTuple(&src[0], argNum); + ctx.WORKGROUP(ir::WORKGROUP_OP_BROADCAST, (uint32_t)f.getwgBroadcastSLM(), getRegister(&I), srcTuple, argNum, +- getType(ctx, (*CS.arg_begin())->getType())); ++ getType(ctx, (*I.arg_begin())->getType())); + } else { + ConstantInt *sign = dyn_cast(AI); + GBE_ASSERT(sign); +@@ -4423,9 +4423,9 @@ + GBE_ASSERT(AI == AE); + } + +- void GenWriter::emitSubGroupInst(CallInst &I, CallSite &CS, ir::WorkGroupOps opcode) { +- CallSite::arg_iterator AI = CS.arg_begin(); +- CallSite::arg_iterator AE = CS.arg_end(); ++ void GenWriter::emitSubGroupInst(CallInst &I, ir::WorkGroupOps opcode) { ++ User::op_iterator AI = I.arg_begin(); ++ User::op_iterator AE = I.arg_end(); + GBE_ASSERT(AI != AE); + + if (opcode == ir::WORKGROUP_OP_ALL || opcode == ir::WORKGROUP_OP_ANY) { +@@ -4435,7 +4435,7 @@ + const ir::Tuple srcTuple = ctx.arrayTuple(&src[0], 1); + ctx.SUBGROUP(opcode, getRegister(&I), srcTuple, 1, ir::TYPE_S32); + } else if (opcode == ir::WORKGROUP_OP_BROADCAST) { +- int argNum = CS.arg_size(); ++ int argNum = I.arg_size(); + GBE_ASSERT(argNum == 2); + std::vector src(argNum); + for (int i = 0; i < argNum; i++) { +@@ -4443,7 +4443,7 @@ + } + const ir::Tuple srcTuple = ctx.arrayTuple(&src[0], argNum); + ctx.SUBGROUP(ir::WORKGROUP_OP_BROADCAST, getRegister(&I), srcTuple, argNum, +- getType(ctx, (*CS.arg_begin())->getType())); ++ getType(ctx, (*I.arg_begin())->getType())); + } else { + ConstantInt *sign = dyn_cast(AI); + GBE_ASSERT(sign); +@@ -4466,9 +4466,9 @@ + GBE_ASSERT(AI == AE); + } + +- void GenWriter::emitBlockReadWriteMemInst(CallInst &I, CallSite &CS, bool isWrite, uint8_t vec_size, ir::Type type) { +- CallSite::arg_iterator AI = CS.arg_begin(); +- CallSite::arg_iterator AE = CS.arg_end(); ++ void GenWriter::emitBlockReadWriteMemInst(CallInst &I, bool isWrite, uint8_t vec_size, ir::Type type) { ++ User::op_iterator AI = I.arg_begin(); ++ User::op_iterator AE = I.arg_end(); + GBE_ASSERT(AI != AE); + + Value *llvmPtr = *(AI++); +@@ -4522,9 +4522,9 @@ + GBE_ASSERT(AI == AE); + } + +- void GenWriter::emitBlockReadWriteImageInst(CallInst &I, CallSite &CS, bool isWrite, uint8_t vec_size, ir::Type type) { +- CallSite::arg_iterator AI = CS.arg_begin(); +- CallSite::arg_iterator AE = CS.arg_end(); ++ void GenWriter::emitBlockReadWriteImageInst(CallInst &I, bool isWrite, uint8_t vec_size, ir::Type type) { ++ User::op_iterator AI = I.arg_begin(); ++ User::op_iterator AE = I.arg_end(); + GBE_ASSERT(AI != AE); + + const uint8_t imageID = getImageID(I); +@@ -4557,7 +4557,7 @@ + + /* append a new sampler. should be called before any reference to + * a sampler_t value. */ +- uint8_t GenWriter::appendSampler(CallSite::arg_iterator AI) { ++ uint8_t GenWriter::appendSampler(User::op_iterator AI) { + #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 40 + CallInst *TC = dyn_cast(*AI); + Constant *CPV = TC ? dyn_cast(TC->getOperand(0)) : NULL; +@@ -4595,10 +4595,9 @@ + const ir::Function &fn = ctx.getFunction(); + + // Get the function arguments +- CallSite CS(&I); +- CallSite::arg_iterator AI = CS.arg_begin(); ++ User::op_iterator AI = I.arg_begin(); + #if GBE_DEBUG +- CallSite::arg_iterator AE = CS.arg_end(); ++ User::op_iterator AE = I.arg_end(); + #endif /* GBE_DEBUG */ + switch (F->getIntrinsicID()) { + case Intrinsic::stacksave: +@@ -4764,17 +4763,17 @@ + ctx.MAD(srcType, dst, src0, src1, src2); + } + break; +- case Intrinsic::sqrt: this->emitUnaryCallInst(I,CS,ir::OP_SQR); break; +- case Intrinsic::ceil: this->emitRoundingCallInst(I,CS,ir::OP_RNDU); break; +- case Intrinsic::trunc: this->emitRoundingCallInst(I,CS,ir::OP_RNDZ); break; +- case Intrinsic::rint: this->emitRoundingCallInst(I,CS,ir::OP_RNDE); break; +- case Intrinsic::floor: this->emitRoundingCallInst(I,CS,ir::OP_RNDD); break; +- case Intrinsic::sin: this->emitUnaryCallInst(I,CS,ir::OP_SIN); break; +- case Intrinsic::cos: this->emitUnaryCallInst(I,CS,ir::OP_COS); break; +- case Intrinsic::log2: this->emitUnaryCallInst(I,CS,ir::OP_LOG); break; +- case Intrinsic::exp2: this->emitUnaryCallInst(I,CS,ir::OP_EXP); break; ++ case Intrinsic::sqrt: this->emitUnaryCallInst(I,ir::OP_SQR); break; ++ case Intrinsic::ceil: this->emitRoundingCallInst(I,ir::OP_RNDU); break; ++ case Intrinsic::trunc: this->emitRoundingCallInst(I,ir::OP_RNDZ); break; ++ case Intrinsic::rint: this->emitRoundingCallInst(I,ir::OP_RNDE); break; ++ case Intrinsic::floor: this->emitRoundingCallInst(I,ir::OP_RNDD); break; ++ case Intrinsic::sin: this->emitUnaryCallInst(I,ir::OP_SIN); break; ++ case Intrinsic::cos: this->emitUnaryCallInst(I,ir::OP_COS); break; ++ case Intrinsic::log2: this->emitUnaryCallInst(I,ir::OP_LOG); break; ++ case Intrinsic::exp2: this->emitUnaryCallInst(I,ir::OP_EXP); break; + case Intrinsic::bswap: +- this->emitUnaryCallInst(I,CS,ir::OP_BSWAP, getUnsignedType(ctx, I.getType())); break; ++ this->emitUnaryCallInst(I,ir::OP_BSWAP, getUnsignedType(ctx, I.getType())); break; + case Intrinsic::pow: + { + const ir::Register src0 = this->getRegister(*AI); ++AI; +@@ -4794,21 +4793,20 @@ + } + } else { + // Get the name of the called function and handle it +- Value *Callee = I.getCalledValue(); +- const std::string fnName = Callee->stripPointerCasts()->getName(); ++ Value *Callee = I.getCalledOperand(); ++ const std::string fnName = Callee->stripPointerCasts()->getName().str(); + auto genIntrinsicID = intrinsicMap.find(fnName); + + // Get the function arguments +- CallSite CS(&I); +- CallSite::arg_iterator AI = CS.arg_begin(); ++ User::op_iterator AI = I.arg_begin(); + #if GBE_DEBUG +- CallSite::arg_iterator AE = CS.arg_end(); ++ User::op_iterator AE = I.arg_end(); + #endif /* GBE_DEBUG */ + + switch (genIntrinsicID) { +- case GEN_OCL_FBH: this->emitUnaryCallInst(I,CS,ir::OP_FBH, ir::TYPE_U32); break; +- case GEN_OCL_FBL: this->emitUnaryCallInst(I,CS,ir::OP_FBL, ir::TYPE_U32); break; +- case GEN_OCL_CBIT: this->emitUnaryCallInst(I,CS,ir::OP_CBIT, getUnsignedType(ctx, (*AI)->getType())); break; ++ case GEN_OCL_FBH: this->emitUnaryCallInst(I,ir::OP_FBH, ir::TYPE_U32); break; ++ case GEN_OCL_FBL: this->emitUnaryCallInst(I,ir::OP_FBL, ir::TYPE_U32); break; ++ case GEN_OCL_CBIT: this->emitUnaryCallInst(I,ir::OP_CBIT, getUnsignedType(ctx, (*AI)->getType())); break; + case GEN_OCL_ABS: + { + const ir::Register src = this->getRegister(*AI); +@@ -4915,8 +4913,8 @@ + ctx.REGION(dst, src, x.getIntegerValue()); + break; + } +- case GEN_OCL_RSQ: this->emitUnaryCallInst(I,CS,ir::OP_RSQ); break; +- case GEN_OCL_RCP: this->emitUnaryCallInst(I,CS,ir::OP_RCP); break; ++ case GEN_OCL_RSQ: this->emitUnaryCallInst(I,ir::OP_RSQ); break; ++ case GEN_OCL_RCP: this->emitUnaryCallInst(I,ir::OP_RCP); break; + case GEN_OCL_FORCE_SIMD8: ctx.setSimdWidth(8); break; + case GEN_OCL_FORCE_SIMD16: ctx.setSimdWidth(16); break; + case GEN_OCL_LBARRIER: ctx.SYNC(ir::syncLocalBarrier); break; +@@ -4947,31 +4945,31 @@ + break; + } + case GEN_OCL_ATOMIC_ADD0: +- case GEN_OCL_ATOMIC_ADD1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_ADD); break; ++ case GEN_OCL_ATOMIC_ADD1: this->emitAtomicInst(I,ir::ATOMIC_OP_ADD); break; + case GEN_OCL_ATOMIC_SUB0: +- case GEN_OCL_ATOMIC_SUB1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_SUB); break; ++ case GEN_OCL_ATOMIC_SUB1: this->emitAtomicInst(I,ir::ATOMIC_OP_SUB); break; + case GEN_OCL_ATOMIC_AND0: +- case GEN_OCL_ATOMIC_AND1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_AND); break; ++ case GEN_OCL_ATOMIC_AND1: this->emitAtomicInst(I,ir::ATOMIC_OP_AND); break; + case GEN_OCL_ATOMIC_OR0: +- case GEN_OCL_ATOMIC_OR1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_OR); break; ++ case GEN_OCL_ATOMIC_OR1: this->emitAtomicInst(I,ir::ATOMIC_OP_OR); break; + case GEN_OCL_ATOMIC_XOR0: +- case GEN_OCL_ATOMIC_XOR1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_XOR); break; ++ case GEN_OCL_ATOMIC_XOR1: this->emitAtomicInst(I,ir::ATOMIC_OP_XOR); break; + case GEN_OCL_ATOMIC_XCHG0: +- case GEN_OCL_ATOMIC_XCHG1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_XCHG); break; ++ case GEN_OCL_ATOMIC_XCHG1: this->emitAtomicInst(I,ir::ATOMIC_OP_XCHG); break; + case GEN_OCL_ATOMIC_INC0: +- case GEN_OCL_ATOMIC_INC1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_INC); break; ++ case GEN_OCL_ATOMIC_INC1: this->emitAtomicInst(I,ir::ATOMIC_OP_INC); break; + case GEN_OCL_ATOMIC_DEC0: +- case GEN_OCL_ATOMIC_DEC1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_DEC); break; ++ case GEN_OCL_ATOMIC_DEC1: this->emitAtomicInst(I,ir::ATOMIC_OP_DEC); break; + case GEN_OCL_ATOMIC_UMIN0: +- case GEN_OCL_ATOMIC_UMIN1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_UMIN); break; ++ case GEN_OCL_ATOMIC_UMIN1: this->emitAtomicInst(I,ir::ATOMIC_OP_UMIN); break; + case GEN_OCL_ATOMIC_UMAX0: +- case GEN_OCL_ATOMIC_UMAX1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_UMAX); break; ++ case GEN_OCL_ATOMIC_UMAX1: this->emitAtomicInst(I,ir::ATOMIC_OP_UMAX); break; + case GEN_OCL_ATOMIC_IMIN0: +- case GEN_OCL_ATOMIC_IMIN1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_IMIN); break; ++ case GEN_OCL_ATOMIC_IMIN1: this->emitAtomicInst(I,ir::ATOMIC_OP_IMIN); break; + case GEN_OCL_ATOMIC_IMAX0: +- case GEN_OCL_ATOMIC_IMAX1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_IMAX); break; ++ case GEN_OCL_ATOMIC_IMAX1: this->emitAtomicInst(I,ir::ATOMIC_OP_IMAX); break; + case GEN_OCL_ATOMIC_CMPXCHG0: +- case GEN_OCL_ATOMIC_CMPXCHG1: this->emitAtomicInst(I,CS,ir::ATOMIC_OP_CMPXCHG); break; ++ case GEN_OCL_ATOMIC_CMPXCHG1: this->emitAtomicInst(I,ir::ATOMIC_OP_CMPXCHG); break; + case GEN_OCL_GET_IMAGE_WIDTH: + case GEN_OCL_GET_IMAGE_HEIGHT: + case GEN_OCL_GET_IMAGE_DEPTH: +@@ -5429,48 +5427,48 @@ + ctx.WAIT(); + break; + } +- case GEN_OCL_WORK_GROUP_ALL: this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_ALL); break; +- case GEN_OCL_WORK_GROUP_ANY: this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_ANY); break; ++ case GEN_OCL_WORK_GROUP_ALL: this->emitWorkGroupInst(I, ir::WORKGROUP_OP_ALL); break; ++ case GEN_OCL_WORK_GROUP_ANY: this->emitWorkGroupInst(I, ir::WORKGROUP_OP_ANY); break; + case GEN_OCL_WORK_GROUP_BROADCAST: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_BROADCAST); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_BROADCAST); break; + case GEN_OCL_WORK_GROUP_REDUCE_ADD: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_REDUCE_ADD); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_REDUCE_ADD); break; + case GEN_OCL_WORK_GROUP_REDUCE_MAX: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_REDUCE_MAX); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_REDUCE_MAX); break; + case GEN_OCL_WORK_GROUP_REDUCE_MIN: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_REDUCE_MIN); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_REDUCE_MIN); break; + case GEN_OCL_WORK_GROUP_SCAN_EXCLUSIVE_ADD: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_EXCLUSIVE_ADD); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_EXCLUSIVE_ADD); break; + case GEN_OCL_WORK_GROUP_SCAN_EXCLUSIVE_MAX: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_EXCLUSIVE_MAX); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_EXCLUSIVE_MAX); break; + case GEN_OCL_WORK_GROUP_SCAN_EXCLUSIVE_MIN: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_EXCLUSIVE_MIN); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_EXCLUSIVE_MIN); break; + case GEN_OCL_WORK_GROUP_SCAN_INCLUSIVE_ADD: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_INCLUSIVE_ADD); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_INCLUSIVE_ADD); break; + case GEN_OCL_WORK_GROUP_SCAN_INCLUSIVE_MAX: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_INCLUSIVE_MAX); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_INCLUSIVE_MAX); break; + case GEN_OCL_WORK_GROUP_SCAN_INCLUSIVE_MIN: +- this->emitWorkGroupInst(I, CS, ir::WORKGROUP_OP_INCLUSIVE_MIN); break; ++ this->emitWorkGroupInst(I, ir::WORKGROUP_OP_INCLUSIVE_MIN); break; + case GEN_OCL_SUB_GROUP_BROADCAST: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_BROADCAST); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_BROADCAST); break; + case GEN_OCL_SUB_GROUP_REDUCE_ADD: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_REDUCE_ADD); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_REDUCE_ADD); break; + case GEN_OCL_SUB_GROUP_REDUCE_MAX: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_REDUCE_MAX); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_REDUCE_MAX); break; + case GEN_OCL_SUB_GROUP_REDUCE_MIN: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_REDUCE_MIN); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_REDUCE_MIN); break; + case GEN_OCL_SUB_GROUP_SCAN_EXCLUSIVE_ADD: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_EXCLUSIVE_ADD); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_EXCLUSIVE_ADD); break; + case GEN_OCL_SUB_GROUP_SCAN_EXCLUSIVE_MAX: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_EXCLUSIVE_MAX); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_EXCLUSIVE_MAX); break; + case GEN_OCL_SUB_GROUP_SCAN_EXCLUSIVE_MIN: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_EXCLUSIVE_MIN); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_EXCLUSIVE_MIN); break; + case GEN_OCL_SUB_GROUP_SCAN_INCLUSIVE_ADD: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_INCLUSIVE_ADD); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_INCLUSIVE_ADD); break; + case GEN_OCL_SUB_GROUP_SCAN_INCLUSIVE_MAX: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_INCLUSIVE_MAX); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_INCLUSIVE_MAX); break; + case GEN_OCL_SUB_GROUP_SCAN_INCLUSIVE_MIN: +- this->emitSubGroupInst(I, CS, ir::WORKGROUP_OP_INCLUSIVE_MIN); break; ++ this->emitSubGroupInst(I, ir::WORKGROUP_OP_INCLUSIVE_MIN); break; + case GEN_OCL_LRP: + { + const ir::Register dst = this->getRegister(&I); +@@ -5484,69 +5482,69 @@ + break; + } + case GEN_OCL_SUB_GROUP_BLOCK_READ_UI_MEM: +- this->emitBlockReadWriteMemInst(I, CS, false, 1); break; ++ this->emitBlockReadWriteMemInst(I, false, 1); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_UI_MEM2: +- this->emitBlockReadWriteMemInst(I, CS, false, 2); break; ++ this->emitBlockReadWriteMemInst(I, false, 2); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_UI_MEM4: +- this->emitBlockReadWriteMemInst(I, CS, false, 4); break; ++ this->emitBlockReadWriteMemInst(I, false, 4); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_UI_MEM8: +- this->emitBlockReadWriteMemInst(I, CS, false, 8); break; ++ this->emitBlockReadWriteMemInst(I, false, 8); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_UI_MEM: +- this->emitBlockReadWriteMemInst(I, CS, true, 1); break; ++ this->emitBlockReadWriteMemInst(I, true, 1); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_UI_MEM2: +- this->emitBlockReadWriteMemInst(I, CS, true, 2); break; ++ this->emitBlockReadWriteMemInst(I, true, 2); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_UI_MEM4: +- this->emitBlockReadWriteMemInst(I, CS, true, 4); break; ++ this->emitBlockReadWriteMemInst(I, true, 4); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_UI_MEM8: +- this->emitBlockReadWriteMemInst(I, CS, true, 8); break; ++ this->emitBlockReadWriteMemInst(I, true, 8); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_UI_IMAGE: +- this->emitBlockReadWriteImageInst(I, CS, false, 1); break; ++ this->emitBlockReadWriteImageInst(I, false, 1); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_UI_IMAGE2: +- this->emitBlockReadWriteImageInst(I, CS, false, 2); break; ++ this->emitBlockReadWriteImageInst(I, false, 2); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_UI_IMAGE4: +- this->emitBlockReadWriteImageInst(I, CS, false, 4); break; ++ this->emitBlockReadWriteImageInst(I, false, 4); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_UI_IMAGE8: +- this->emitBlockReadWriteImageInst(I, CS, false, 8); break; ++ this->emitBlockReadWriteImageInst(I, false, 8); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_UI_IMAGE: +- this->emitBlockReadWriteImageInst(I, CS, true, 1); break; ++ this->emitBlockReadWriteImageInst(I, true, 1); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_UI_IMAGE2: +- this->emitBlockReadWriteImageInst(I, CS, true, 2); break; ++ this->emitBlockReadWriteImageInst(I, true, 2); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_UI_IMAGE4: +- this->emitBlockReadWriteImageInst(I, CS, true, 4); break; ++ this->emitBlockReadWriteImageInst(I, true, 4); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_UI_IMAGE8: +- this->emitBlockReadWriteImageInst(I, CS, true, 8); break; ++ this->emitBlockReadWriteImageInst(I, true, 8); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_US_MEM: +- this->emitBlockReadWriteMemInst(I, CS, false, 1, ir::TYPE_U16); break; ++ this->emitBlockReadWriteMemInst(I, false, 1, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_US_MEM2: +- this->emitBlockReadWriteMemInst(I, CS, false, 2, ir::TYPE_U16); break; ++ this->emitBlockReadWriteMemInst(I, false, 2, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_US_MEM4: +- this->emitBlockReadWriteMemInst(I, CS, false, 4, ir::TYPE_U16); break; ++ this->emitBlockReadWriteMemInst(I, false, 4, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_US_MEM8: +- this->emitBlockReadWriteMemInst(I, CS, false, 8, ir::TYPE_U16); break; ++ this->emitBlockReadWriteMemInst(I, false, 8, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_US_MEM: +- this->emitBlockReadWriteMemInst(I, CS, true, 1, ir::TYPE_U16); break; ++ this->emitBlockReadWriteMemInst(I, true, 1, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_US_MEM2: +- this->emitBlockReadWriteMemInst(I, CS, true, 2, ir::TYPE_U16); break; ++ this->emitBlockReadWriteMemInst(I, true, 2, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_US_MEM4: +- this->emitBlockReadWriteMemInst(I, CS, true, 4, ir::TYPE_U16); break; ++ this->emitBlockReadWriteMemInst(I, true, 4, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_US_MEM8: +- this->emitBlockReadWriteMemInst(I, CS, true, 8, ir::TYPE_U16); break; ++ this->emitBlockReadWriteMemInst(I, true, 8, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_US_IMAGE: +- this->emitBlockReadWriteImageInst(I, CS, false, 1, ir::TYPE_U16); break; ++ this->emitBlockReadWriteImageInst(I, false, 1, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_US_IMAGE2: +- this->emitBlockReadWriteImageInst(I, CS, false, 2, ir::TYPE_U16); break; ++ this->emitBlockReadWriteImageInst(I, false, 2, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_US_IMAGE4: +- this->emitBlockReadWriteImageInst(I, CS, false, 4, ir::TYPE_U16); break; ++ this->emitBlockReadWriteImageInst(I, false, 4, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_READ_US_IMAGE8: +- this->emitBlockReadWriteImageInst(I, CS, false, 8, ir::TYPE_U16); break; ++ this->emitBlockReadWriteImageInst(I, false, 8, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_US_IMAGE: +- this->emitBlockReadWriteImageInst(I, CS, true, 1, ir::TYPE_U16); break; ++ this->emitBlockReadWriteImageInst(I, true, 1, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_US_IMAGE2: +- this->emitBlockReadWriteImageInst(I, CS, true, 2, ir::TYPE_U16); break; ++ this->emitBlockReadWriteImageInst(I, true, 2, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_US_IMAGE4: +- this->emitBlockReadWriteImageInst(I, CS, true, 4, ir::TYPE_U16); break; ++ this->emitBlockReadWriteImageInst(I, true, 4, ir::TYPE_U16); break; + case GEN_OCL_SUB_GROUP_BLOCK_WRITE_US_IMAGE8: +- this->emitBlockReadWriteImageInst(I, CS, true, 8, ir::TYPE_U16); break; ++ this->emitBlockReadWriteImageInst(I, true, 8, ir::TYPE_U16); break; + case GEN_OCL_GET_PIPE: + case GEN_OCL_MAKE_RID: + case GEN_OCL_GET_RID: +--- backend/src/llvm/llvm_includes.hpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_includes.hpp 2020-11-09 19:00:09.955926795 +0100 +@@ -103,7 +103,6 @@ + + #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 + #include "llvm/IR/Mangler.h" +-#include "llvm/IR/CallSite.h" + #include "llvm/IR/CFG.h" + #include "llvm/IR/InstVisitor.h" + #include "llvm/IR/IRPrintingPasses.h" +--- backend/src/llvm/llvm_loadstore_optimization.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_loadstore_optimization.cpp 2020-11-09 19:10:37.141852308 +0100 +@@ -160,7 +160,7 @@ + Value *vecPtr = Builder.CreateBitCast(ld->getPointerOperand(), + PointerType::get(vecTy, addrSpace)); + LoadInst *vecValue = Builder.CreateLoad(vecPtr); +- vecValue->setAlignment(align); ++ vecValue->setAlignment(align.valueOrOne()); + + for (unsigned i = 0; i < size; ++i) { + Value *S = Builder.CreateExtractElement(vecValue, Builder.getInt32(i)); +@@ -251,7 +251,7 @@ + return; + Value *newPtr = Builder.CreateBitCast(stPointer, PointerType::get(vecTy, addrSpace)); + StoreInst *newST = Builder.CreateStore(parent, newPtr); +- newST->setAlignment(align); ++ newST->setAlignment(align.valueOrOne()); + } + + // Find the safe iterator we can point to. If reorder happens, we need to +--- backend/src/llvm/llvm_passes.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_passes.cpp 2020-11-09 18:48:55.997006837 +0100 +@@ -87,14 +87,14 @@ + } + + int32_t getPadding(int32_t offset, int32_t align) { +- return (align - (offset % align)) % align; ++ return (align - (offset % align)) % align; + } + + uint32_t getAlignmentByte(const ir::Unit &unit, Type* Ty) + { + switch (Ty->getTypeID()) { + case Type::VoidTyID: NOT_SUPPORTED; +- case Type::VectorTyID: ++ case Type::FixedVectorTyID: + { + const VectorType* VecTy = cast(Ty); + uint32_t elemNum = VecTy->getNumElements(); +@@ -138,7 +138,7 @@ + case Type::HalfTyID: return 16; + case Type::FloatTyID: return 32; + case Type::DoubleTyID: return 64; +- case Type::VectorTyID: ++ case Type::FixedVectorTyID: + { + const VectorType* VecTy = cast(Ty); + uint32_t numElem = VecTy->getNumElements(); +@@ -184,10 +184,12 @@ + Type *elementType = NULL; + if (PointerType* ptrType = dyn_cast(eltTy)) + elementType = ptrType->getElementType(); +- else if(SequentialType * seqType = dyn_cast(eltTy)) +- elementType = seqType->getElementType(); +- else if(CompositeType * compTy= dyn_cast(eltTy)) +- elementType = compTy->getTypeAtIndex(index); ++ else if (ArrayType * arrType = dyn_cast(eltTy)) ++ elementType = arrType->getElementType(); ++ else if(VectorType * vecType = dyn_cast(eltTy)) ++ elementType = vecType->getElementType(); ++ else if(StructType * structType = dyn_cast(eltTy)) ++ elementType = structType->getTypeAtIndex(index); + GBE_ASSERT(elementType); + return elementType; + } +--- backend/src/llvm/llvm_printf_parser.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_printf_parser.cpp 2020-11-09 18:57:52.618943105 +0100 +@@ -323,8 +323,7 @@ + + bool PrintfParser::parseOnePrintfInstruction(CallInst * call) + { +- CallSite CS(call); +- CallSite::arg_iterator CI_FMT = CS.arg_begin(); ++ User::op_iterator CI_FMT = call->arg_begin(); + int param_num = 0; + + llvm::Constant* arg0 = dyn_cast(*CI_FMT); +@@ -341,7 +340,7 @@ + return false; + } + +- std::string fmt = fmt_arg->getAsCString(); ++ std::string fmt = fmt_arg->getAsCString().str(); + if (fmt.size() == 0) + return false; + +@@ -437,8 +436,8 @@ + if ( callFunc->getIntrinsicID() != 0) + continue; + +- Value *Callee = call->getCalledValue(); +- const std::string fnName = Callee->getName(); ++ Value *Callee = call->getCalledOperand(); ++ const std::string fnName = Callee->getName().str(); + + if (fnName != "__gen_ocl_printf_stub" && fnName != "__gen_ocl_puts_stub") + continue; +@@ -582,7 +581,7 @@ + if (!fmt_arg || !fmt_arg->isCString()) { + return false; + } +- slot.state.str = fmt_arg->getAsCString(); ++ slot.state.str = fmt_arg->getAsCString().str(); + return true; + } + case PRINTF_CONVERSION_P: { +@@ -595,10 +594,10 @@ + + break; + +- case Type::VectorTyID: { +- Type* vect_type = arg->getType(); +- Type* elt_type = vect_type->getVectorElementType(); +- int vec_num = vect_type->getVectorNumElements(); ++ case Type::FixedVectorTyID: { ++ VectorType* vect_type = dyn_cast(arg->getType()); ++ Type* elt_type = vect_type->getElementType(); ++ int vec_num = vect_type->getNumElements(); + bool sign = false; + + if (vec_num != slot.state.vector_n) { +--- backend/src/llvm/llvm_profiling.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_profiling.cpp 2020-11-09 18:59:50.120929150 +0100 +@@ -35,7 +35,6 @@ + #include "llvm/IR/IRBuilder.h" + + #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 +-#include "llvm/IR/CallSite.h" + #include "llvm/IR/CFG.h" + #else + #include "llvm/Support/CallSite.h" +--- backend/src/llvm/llvm_sampler_fix.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_sampler_fix.cpp 2020-11-09 17:01:09.407774832 +0100 +@@ -45,8 +45,8 @@ + bool visitCallInst(CallInst *I) { + if(!I) + return false; +- Value *Callee = I->getCalledValue(); +- const std::string fnName = Callee->getName(); ++ Value *Callee = I->getCalledOperand(); ++ const std::string fnName = Callee->getName().str(); + bool changed = false; + Type *boolTy = IntegerType::get(I->getContext(), 1); + Type *i32Ty = IntegerType::get(I->getContext(), 32); +@@ -59,7 +59,7 @@ + Value *needFixVal; + #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 40 + CallInst *init = dyn_cast(I->getOperand(0)); +- if (init && init->getCalledValue()->getName().compare("__translate_sampler_initializer")) ++ if (init && init->getCalledOperand()->getName().compare("__translate_sampler_initializer")) + { + const ConstantInt *ci = dyn_cast(init->getOperand(0)); + uint32_t samplerInt = ci->getZExtValue(); +@@ -113,7 +113,7 @@ + Value *needFixVal; + #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 40 + CallInst *init = dyn_cast(I->getOperand(0)); +- if (init && init->getCalledValue()->getName().compare("__translate_sampler_initializer")) ++ if (init && init->getCalledOperand()->getName().compare("__translate_sampler_initializer")) + { + const ConstantInt *ci = dyn_cast(init->getOperand(0)); + uint32_t samplerInt = ci->getZExtValue(); +--- backend/src/llvm/llvm_scalarize.cpp 2020-11-09 16:48:20.823866112 +0100 ++++ backend/src/llvm/llvm_scalarize.cpp 2020-11-09 18:51:16.888990104 +0100 +@@ -178,7 +178,7 @@ + if(!type) + return type; + switch(type->getTypeID()) { +- case Type::VectorTyID: ++ case Type::FixedVectorTyID: + case Type::ArrayTyID: + return GetBasicType(type->getContainedType(0)); + default: +@@ -188,7 +188,7 @@ + } + + int GetComponentCount(const Type* type) { +- if (type && type->getTypeID() == Type::VectorTyID) ++ if (type && type->getTypeID() == Type::FixedVectorTyID) + return llvm::dyn_cast(type)->getNumElements(); + else + return 1; +@@ -652,13 +652,12 @@ + break; + } + } else { +- Value *Callee = call->getCalledValue(); +- const std::string fnName = Callee->getName(); ++ Value *Callee = call->getCalledOperand(); ++ const std::string fnName = Callee->getName().str(); + auto genIntrinsicID = intrinsicMap.find(fnName); + + // Get the function arguments +- CallSite CS(call); +- CallSite::arg_iterator CI = CS.arg_begin() + 1; ++ User::op_iterator CI = call->arg_begin() + 1; + + switch (genIntrinsicID) { + case GEN_OCL_NOT_FOUND: +@@ -729,7 +728,7 @@ + extractFromVector(call); + break; + case GEN_OCL_PRINTF: +- for (; CI != CS.arg_end(); ++CI) ++ for (; CI != call->arg_end(); ++CI) + if ((*CI)->getType()->isVectorTy()) + *CI = InsertToVector(call, *CI); + break; diff --git a/srcpkgs/beignet/template b/srcpkgs/beignet/template index a7b6dff107f..e37102ce14f 100644 --- a/srcpkgs/beignet/template +++ b/srcpkgs/beignet/template @@ -1,7 +1,7 @@ # Template file for 'beignet' pkgname=beignet version=1.3.2 -revision=8 +revision=9 archs="i686* x86_64*" wrksrc="Beignet-${version}-Source" build_style=cmake