diff --git a/.centos-ignore b/.centos-ignore new file mode 100644 index 0000000..0a86052 --- /dev/null +++ b/.centos-ignore @@ -0,0 +1,9 @@ +# List of files and directories that are not needed on CentOS/RHEL. +/centos-sync.sh +/ci.fmf +/prepare-copr.sh +/tests/kernel-ark-build.fmf +/Makefile +/.copr +/.git-blame-ignore-revs +/.packit.yaml diff --git a/.gitignore b/.gitignore index 0ee3384..65eb8c7 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /BUILDROOT /out /version.spec.inc +/.gdbinit diff --git a/0001-22-polly-shared-libs.patch b/0001-22-polly-shared-libs.patch new file mode 100644 index 0000000..091db35 --- /dev/null +++ b/0001-22-polly-shared-libs.patch @@ -0,0 +1,59 @@ +From daf5077c8ce848b39239879369679c9fea7041b1 Mon Sep 17 00:00:00 2001 +From: Konrad Kleine +Date: Tue, 28 Jan 2025 08:34:09 +0000 +Subject: [PATCH] shared libs + +--- + polly/cmake/polly_macros.cmake | 5 ++++- + polly/lib/CMakeLists.txt | 1 + + polly/lib/External/CMakeLists.txt | 1 + + 3 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/polly/cmake/polly_macros.cmake b/polly/cmake/polly_macros.cmake +index 9bd7b0b0ea59..fc2c3a76901f 100644 +--- a/polly/cmake/polly_macros.cmake ++++ b/polly/cmake/polly_macros.cmake +@@ -1,5 +1,5 @@ + macro(add_polly_library name) +- cmake_parse_arguments(ARG "" "" "" ${ARGN}) ++ cmake_parse_arguments(ARG "SHARED" "" "" ${ARGN}) + set(srcs ${ARG_UNPARSED_ARGUMENTS}) + if(MSVC_IDE OR XCODE) + file( GLOB_RECURSE headers *.h *.td *.def) +@@ -17,6 +17,9 @@ macro(add_polly_library name) + else() + set(libkind) + endif() ++ if (ARG_SHARED) ++ set(libkind SHARED) ++ endif() + add_library( ${name} ${libkind} ${srcs} ) + set_target_properties(${name} PROPERTIES FOLDER "Polly/Libraries") + +diff --git a/polly/lib/CMakeLists.txt b/polly/lib/CMakeLists.txt +index 0ed673815ff3..e156dcb31655 100644 +--- a/polly/lib/CMakeLists.txt ++++ b/polly/lib/CMakeLists.txt +@@ -41,6 +41,7 @@ set(POLLY_COMPONENTS + # the sources them to be recompiled for each of them. + add_llvm_pass_plugin(Polly + NO_MODULE ++ SHARED + SUBPROJECT Polly + Analysis/DependenceInfo.cpp + Analysis/ScopDetection.cpp +diff --git a/polly/lib/External/CMakeLists.txt b/polly/lib/External/CMakeLists.txt +index ab5cba93cdcf..fdfd06864bc7 100644 +--- a/polly/lib/External/CMakeLists.txt ++++ b/polly/lib/External/CMakeLists.txt +@@ -284,6 +284,7 @@ if (POLLY_BUNDLED_ISL) + ) + + add_polly_library(PollyISL ++ SHARED + ${ISL_FILES} + ) + +-- +2.50.1 + diff --git a/0001-BPF-Support-Jump-Table-149715.patch b/0001-BPF-Support-Jump-Table-149715.patch new file mode 100644 index 0000000..c1cbc12 --- /dev/null +++ b/0001-BPF-Support-Jump-Table-149715.patch @@ -0,0 +1,1354 @@ +From 528baf4740aed86443e3041eb3b6044963f96e1a Mon Sep 17 00:00:00 2001 +From: yonghong-song +Date: Tue, 16 Sep 2025 09:27:08 -0700 +Subject: [PATCH] [BPF] Support Jump Table (#149715) + +Add jump table (switch statement and computed goto) support for BPF +backend. +A `gotox ` insn is implemented and the `` holds the target +insn where the gotox will go. + +For a switch statement like +``` +... + switch (ctx->x) { + case 1: ret_user = 18; break; + case 20: ret_user = 6; break; + case 16: ret_user = 9; break; + case 6: ret_user = 16; break; + case 8: ret_user = 14; break; + case 30: ret_user = 2; break; + default: ret_user = 1; break; + } +... +``` +and the final binary +``` + The final binary: + 4: 67 01 00 00 03 00 00 00 r1 <<= 0x3 + 5: 18 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r2 = 0x0 ll + 0000000000000028: R_BPF_64_64 BPF.JT.0.0 + 7: 0f 12 00 00 00 00 00 00 r2 += r1 + ... + Symbol table: + 4: 0000000000000000 240 OBJECT GLOBAL DEFAULT 4 BPF.JT.0.0 + 5: 0000000000000000 4 OBJECT GLOBAL DEFAULT 6 ret_user + 6: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar + 7: 00000000000000f0 256 OBJECT GLOBAL DEFAULT 4 BPF.JT.0.1 + and + [ 4] .jumptables PROGBITS 0000000000000000 0001c8 0001f0 00 0 0 1 +``` +Note that for the above example, `-mllvm -bpf-min-jump-table-entries=5` +should be in compilation flags as the current default +bpf-min-jump-table-entries is 13. For example. +``` +clang --target=bpf -mcpu=v4 -O2 -mllvm -bpf-min-jump-table-entries=5 -S -g test.c +``` + +For computed goto like +``` + int foo(int a, int b) { + __label__ l1, l2, l3, l4; + void *jt1[] = {[0]=&&l1, [1]=&&l2}; + void *jt2[] = {[0]=&&l3, [1]=&&l4}; + int ret = 0; + + goto *jt1[a % 2]; + l1: ret += 1; + l2: ret += 3; + goto *jt2[b % 2]; + l3: ret += 5; + l4: ret += 7; + return ret; + } +``` +The final binary: +``` + 12: bf 23 20 00 00 00 00 00 r3 = (s32)r2 + 13: 67 03 00 00 03 00 00 00 r3 <<= 0x3 + 14: 18 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r2 = 0x0 ll + 0000000000000070: R_BPF_64_64 BPF.JT.0.0 + 16: 0f 32 00 00 00 00 00 00 r2 += r3 + 17: bf 11 20 00 00 00 00 00 r1 = (s32)r1 + 18: 67 01 00 00 03 00 00 00 r1 <<= 0x3 + 19: 18 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r3 = 0x0 ll + 0000000000000098: R_BPF_64_64 BPF.JT.0.1 + 21: 0f 13 00 00 00 00 00 00 r3 += r1 + + [ 4] .jumptables PROGBITS 0000000000000000 000160 000020 00 0 0 1 + + 4: 0000000000000000 16 OBJECT GLOBAL DEFAULT 4 BPF.JT.0.0 + 5: 0000000000000010 16 OBJECT GLOBAL DEFAULT 4 BPF.JT.0.1 +``` + +A more complicated test with both switch-statement triggered jump table +and compute gotos: + +``` +$ cat test3.c +struct simple_ctx { + int x; + int y; + int z; +}; + +int ret_user, ret_user2; +void bar(void); +int foo(struct simple_ctx *ctx, struct simple_ctx *ctx2, int a, int b) +{ + __label__ l1, l2, l3, l4; + void *jt1[] = {[0]=&&l1, [1]=&&l2}; + void *jt2[] = {[0]=&&l3, [1]=&&l4}; + int ret = 0; + + goto *jt1[a % 2]; + l1: ret += 1; + l2: ret += 3; + goto *jt2[b % 2]; + l3: ret += 5; + l4: ret += 7; + + bar(); + + switch (ctx->x) { + case 1: ret_user = 18; break; + case 20: ret_user = 6; break; + case 16: ret_user = 9; break; + case 6: ret_user = 16; break; + case 8: ret_user = 14; break; + case 30: ret_user = 2; break; + default: ret_user = 1; break; + } + + return ret; +} +``` +Compile with +``` + clang --target=bpf -mcpu=v4 -O2 -S test3.c + clang --target=bpf -mcpu=v4 -O2 -c test3.c +``` + The binary: +``` + /* For computed goto */ + 13: bf 42 20 00 00 00 00 00 r2 = (s32)r4 + 14: 67 02 00 00 03 00 00 00 r2 <<= 0x3 + 15: 18 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r1 = 0x0 ll + 0000000000000078: R_BPF_64_64 BPF.JT.0.1 + 17: 0f 21 00 00 00 00 00 00 r1 += r2 + 18: bf 32 20 00 00 00 00 00 r2 = (s32)r3 + 19: 67 02 00 00 03 00 00 00 r2 <<= 0x3 + 20: 18 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r3 = 0x0 ll + 00000000000000a0: R_BPF_64_64 BPF.JT.0.2 + 22: 0f 23 00 00 00 00 00 00 r3 += r2 + + /* For switch statement */ + 39: 67 01 00 00 03 00 00 00 r1 <<= 0x3 + 40: 18 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r2 = 0x0 ll + 0000000000000140: R_BPF_64_64 BPF.JT.0.0 + 42: 0f 12 00 00 00 00 00 00 r2 += r1 +``` +You can see jump table symbols are all different. + +(cherry picked from commit c3fb2e1cee954338acb83955b157e0a2e82a4849) +--- + .../lib/Target/BPF/AsmParser/BPFAsmParser.cpp | 1 + + llvm/lib/Target/BPF/BPFAsmPrinter.cpp | 114 +++++++++++--- + llvm/lib/Target/BPF/BPFAsmPrinter.h | 48 ++++++ + llvm/lib/Target/BPF/BPFISelLowering.cpp | 143 +++++++++++++++++- + llvm/lib/Target/BPF/BPFISelLowering.h | 8 +- + llvm/lib/Target/BPF/BPFInstrInfo.cpp | 45 ++++++ + llvm/lib/Target/BPF/BPFInstrInfo.h | 3 + + llvm/lib/Target/BPF/BPFInstrInfo.td | 26 +++- + llvm/lib/Target/BPF/BPFMCInstLower.cpp | 6 + + llvm/lib/Target/BPF/BPFMCInstLower.h | 6 +- + llvm/lib/Target/BPF/BPFSubtarget.cpp | 4 + + llvm/lib/Target/BPF/BPFSubtarget.h | 3 +- + .../BPF/BPFTargetLoweringObjectFile.cpp | 19 +++ + .../Target/BPF/BPFTargetLoweringObjectFile.h | 25 +++ + llvm/lib/Target/BPF/BPFTargetMachine.cpp | 3 +- + llvm/lib/Target/BPF/CMakeLists.txt | 1 + + llvm/test/CodeGen/BPF/jump_table_blockaddr.ll | 91 +++++++++++ + .../test/CodeGen/BPF/jump_table_global_var.ll | 83 ++++++++++ + .../CodeGen/BPF/jump_table_switch_stmt.ll | 126 +++++++++++++++ + 19 files changed, 716 insertions(+), 39 deletions(-) + create mode 100644 llvm/lib/Target/BPF/BPFAsmPrinter.h + create mode 100644 llvm/lib/Target/BPF/BPFTargetLoweringObjectFile.cpp + create mode 100644 llvm/lib/Target/BPF/BPFTargetLoweringObjectFile.h + create mode 100644 llvm/test/CodeGen/BPF/jump_table_blockaddr.ll + create mode 100644 llvm/test/CodeGen/BPF/jump_table_global_var.ll + create mode 100644 llvm/test/CodeGen/BPF/jump_table_switch_stmt.ll + +diff --git a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp +index a347794a9a30..d96f403d2f81 100644 +--- a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp ++++ b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp +@@ -234,6 +234,7 @@ public: + .Case("callx", true) + .Case("goto", true) + .Case("gotol", true) ++ .Case("gotox", true) + .Case("may_goto", true) + .Case("*", true) + .Case("exit", true) +diff --git a/llvm/lib/Target/BPF/BPFAsmPrinter.cpp b/llvm/lib/Target/BPF/BPFAsmPrinter.cpp +index e3843e0e112e..77dc4a75a7d6 100644 +--- a/llvm/lib/Target/BPF/BPFAsmPrinter.cpp ++++ b/llvm/lib/Target/BPF/BPFAsmPrinter.cpp +@@ -11,52 +11,35 @@ + // + //===----------------------------------------------------------------------===// + ++#include "BPFAsmPrinter.h" + #include "BPF.h" + #include "BPFInstrInfo.h" + #include "BPFMCInstLower.h" + #include "BTFDebug.h" + #include "MCTargetDesc/BPFInstPrinter.h" + #include "TargetInfo/BPFTargetInfo.h" ++#include "llvm/BinaryFormat/ELF.h" + #include "llvm/CodeGen/AsmPrinter.h" + #include "llvm/CodeGen/MachineConstantPool.h" + #include "llvm/CodeGen/MachineInstr.h" ++#include "llvm/CodeGen/MachineJumpTableInfo.h" + #include "llvm/CodeGen/MachineModuleInfo.h" ++#include "llvm/CodeGen/TargetLowering.h" + #include "llvm/IR/Module.h" + #include "llvm/MC/MCAsmInfo.h" ++#include "llvm/MC/MCExpr.h" + #include "llvm/MC/MCInst.h" + #include "llvm/MC/MCStreamer.h" + #include "llvm/MC/MCSymbol.h" ++#include "llvm/MC/MCSymbolELF.h" + #include "llvm/MC/TargetRegistry.h" + #include "llvm/Support/Compiler.h" + #include "llvm/Support/raw_ostream.h" ++#include "llvm/Target/TargetLoweringObjectFile.h" + using namespace llvm; + + #define DEBUG_TYPE "asm-printer" + +-namespace { +-class BPFAsmPrinter : public AsmPrinter { +-public: +- explicit BPFAsmPrinter(TargetMachine &TM, +- std::unique_ptr Streamer) +- : AsmPrinter(TM, std::move(Streamer), ID), BTF(nullptr) {} +- +- StringRef getPassName() const override { return "BPF Assembly Printer"; } +- bool doInitialization(Module &M) override; +- void printOperand(const MachineInstr *MI, int OpNum, raw_ostream &O); +- bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, +- const char *ExtraCode, raw_ostream &O) override; +- bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNum, +- const char *ExtraCode, raw_ostream &O) override; +- +- void emitInstruction(const MachineInstr *MI) override; +- +- static char ID; +- +-private: +- BTFDebug *BTF; +-}; +-} // namespace +- + bool BPFAsmPrinter::doInitialization(Module &M) { + AsmPrinter::doInitialization(M); + +@@ -69,6 +52,45 @@ bool BPFAsmPrinter::doInitialization(Module &M) { + return false; + } + ++const BPFTargetMachine &BPFAsmPrinter::getBTM() const { ++ return static_cast(TM); ++} ++ ++bool BPFAsmPrinter::doFinalization(Module &M) { ++ // Remove unused globals which are previously used for jump table. ++ const BPFSubtarget *Subtarget = getBTM().getSubtargetImpl(); ++ if (Subtarget->hasGotox()) { ++ std::vector Targets; ++ for (GlobalVariable &Global : M.globals()) { ++ if (Global.getLinkage() != GlobalValue::PrivateLinkage) ++ continue; ++ if (!Global.isConstant() || !Global.hasInitializer()) ++ continue; ++ ++ Constant *CV = dyn_cast(Global.getInitializer()); ++ if (!CV) ++ continue; ++ ConstantArray *CA = dyn_cast(CV); ++ if (!CA) ++ continue; ++ ++ for (unsigned i = 1, e = CA->getNumOperands(); i != e; ++i) { ++ if (!dyn_cast(CA->getOperand(i))) ++ continue; ++ } ++ Targets.push_back(&Global); ++ } ++ ++ for (GlobalVariable *GV : Targets) { ++ GV->replaceAllUsesWith(PoisonValue::get(GV->getType())); ++ GV->dropAllReferences(); ++ GV->eraseFromParent(); ++ } ++ } ++ ++ return AsmPrinter::doFinalization(M); ++} ++ + void BPFAsmPrinter::printOperand(const MachineInstr *MI, int OpNum, + raw_ostream &O) { + const MachineOperand &MO = MI->getOperand(OpNum); +@@ -150,6 +172,50 @@ void BPFAsmPrinter::emitInstruction(const MachineInstr *MI) { + EmitToStreamer(*OutStreamer, TmpInst); + } + ++MCSymbol *BPFAsmPrinter::getJTPublicSymbol(unsigned JTI) { ++ SmallString<60> Name; ++ raw_svector_ostream(Name) ++ << "BPF.JT." << MF->getFunctionNumber() << '.' << JTI; ++ MCSymbol *S = OutContext.getOrCreateSymbol(Name); ++ if (auto *ES = static_cast(S)) { ++ ES->setBinding(ELF::STB_GLOBAL); ++ ES->setType(ELF::STT_OBJECT); ++ } ++ return S; ++} ++ ++void BPFAsmPrinter::emitJumpTableInfo() { ++ const MachineJumpTableInfo *MJTI = MF->getJumpTableInfo(); ++ if (!MJTI) ++ return; ++ ++ const std::vector &JT = MJTI->getJumpTables(); ++ if (JT.empty()) ++ return; ++ ++ const TargetLoweringObjectFile &TLOF = getObjFileLowering(); ++ const Function &F = MF->getFunction(); ++ MCSection *JTS = TLOF.getSectionForJumpTable(F, TM); ++ assert(MJTI->getEntryKind() == MachineJumpTableInfo::EK_BlockAddress); ++ unsigned EntrySize = MJTI->getEntrySize(getDataLayout()); ++ OutStreamer->switchSection(JTS); ++ for (unsigned JTI = 0; JTI < JT.size(); JTI++) { ++ ArrayRef JTBBs = JT[JTI].MBBs; ++ if (JTBBs.empty()) ++ continue; ++ ++ MCSymbol *JTStart = getJTPublicSymbol(JTI); ++ OutStreamer->emitLabel(JTStart); ++ for (const MachineBasicBlock *MBB : JTBBs) { ++ const MCExpr *LHS = MCSymbolRefExpr::create(MBB->getSymbol(), OutContext); ++ OutStreamer->emitValue(LHS, EntrySize); ++ } ++ const MCExpr *JTSize = ++ MCConstantExpr::create(JTBBs.size() * EntrySize, OutContext); ++ OutStreamer->emitELFSize(JTStart, JTSize); ++ } ++} ++ + char BPFAsmPrinter::ID = 0; + + INITIALIZE_PASS(BPFAsmPrinter, "bpf-asm-printer", "BPF Assembly Printer", false, +diff --git a/llvm/lib/Target/BPF/BPFAsmPrinter.h b/llvm/lib/Target/BPF/BPFAsmPrinter.h +new file mode 100644 +index 000000000000..0cfb2839c8ff +--- /dev/null ++++ b/llvm/lib/Target/BPF/BPFAsmPrinter.h +@@ -0,0 +1,48 @@ ++//===-- BPFFrameLowering.h - Define frame lowering for BPF -----*- C++ -*--===// ++// ++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. ++// See https://llvm.org/LICENSE.txt for license information. ++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception ++// ++//===----------------------------------------------------------------------===// ++ ++#ifndef LLVM_LIB_TARGET_BPF_BPFASMPRINTER_H ++#define LLVM_LIB_TARGET_BPF_BPFASMPRINTER_H ++ ++#include "BPFTargetMachine.h" ++#include "BTFDebug.h" ++#include "llvm/CodeGen/AsmPrinter.h" ++ ++namespace llvm { ++ ++class BPFAsmPrinter : public AsmPrinter { ++public: ++ explicit BPFAsmPrinter(TargetMachine &TM, ++ std::unique_ptr Streamer) ++ : AsmPrinter(TM, std::move(Streamer), ID), BTF(nullptr), TM(TM) {} ++ ++ StringRef getPassName() const override { return "BPF Assembly Printer"; } ++ bool doInitialization(Module &M) override; ++ bool doFinalization(Module &M) override; ++ void printOperand(const MachineInstr *MI, int OpNum, raw_ostream &O); ++ bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, ++ const char *ExtraCode, raw_ostream &O) override; ++ bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNum, ++ const char *ExtraCode, raw_ostream &O) override; ++ ++ void emitInstruction(const MachineInstr *MI) override; ++ MCSymbol *getJTPublicSymbol(unsigned JTI); ++ virtual void emitJumpTableInfo() override; ++ ++ static char ID; ++ ++private: ++ BTFDebug *BTF; ++ TargetMachine &TM; ++ ++ const BPFTargetMachine &getBTM() const; ++}; ++ ++} // namespace llvm ++ ++#endif /* LLVM_LIB_TARGET_BPF_BPFASMPRINTER_H */ +diff --git a/llvm/lib/Target/BPF/BPFISelLowering.cpp b/llvm/lib/Target/BPF/BPFISelLowering.cpp +index f4f414d192df..6e5520c3dbb1 100644 +--- a/llvm/lib/Target/BPF/BPFISelLowering.cpp ++++ b/llvm/lib/Target/BPF/BPFISelLowering.cpp +@@ -18,6 +18,7 @@ + #include "llvm/CodeGen/MachineFrameInfo.h" + #include "llvm/CodeGen/MachineFunction.h" + #include "llvm/CodeGen/MachineInstrBuilder.h" ++#include "llvm/CodeGen/MachineJumpTableInfo.h" + #include "llvm/CodeGen/MachineRegisterInfo.h" + #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h" + #include "llvm/CodeGen/ValueTypes.h" +@@ -38,6 +39,10 @@ static cl::opt BPFExpandMemcpyInOrder("bpf-expand-memcpy-in-order", + cl::Hidden, cl::init(false), + cl::desc("Expand memcpy into load/store pairs in order")); + ++static cl::opt BPFMinimumJumpTableEntries( ++ "bpf-min-jump-table-entries", cl::init(13), cl::Hidden, ++ cl::desc("Set minimum number of entries to use a jump table on BPF")); ++ + static void fail(const SDLoc &DL, SelectionDAG &DAG, const Twine &Msg, + SDValue Val = {}) { + std::string Str; +@@ -67,12 +72,16 @@ BPFTargetLowering::BPFTargetLowering(const TargetMachine &TM, + + setOperationAction(ISD::BR_CC, MVT::i64, Custom); + setOperationAction(ISD::BR_JT, MVT::Other, Expand); +- setOperationAction(ISD::BRIND, MVT::Other, Expand); + setOperationAction(ISD::BRCOND, MVT::Other, Expand); + ++ if (!STI.hasGotox()) ++ setOperationAction(ISD::BRIND, MVT::Other, Expand); ++ + setOperationAction(ISD::TRAP, MVT::Other, Custom); + + setOperationAction({ISD::GlobalAddress, ISD::ConstantPool}, MVT::i64, Custom); ++ if (STI.hasGotox()) ++ setOperationAction({ISD::JumpTable, ISD::BlockAddress}, MVT::i64, Custom); + + setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i64, Custom); + setOperationAction(ISD::STACKSAVE, MVT::Other, Expand); +@@ -159,6 +168,7 @@ BPFTargetLowering::BPFTargetLowering(const TargetMachine &TM, + + setBooleanContents(ZeroOrOneBooleanContent); + setMaxAtomicSizeInBitsSupported(64); ++ setMinimumJumpTableEntries(BPFMinimumJumpTableEntries); + + // Function alignments + setMinFunctionAlignment(Align(8)); +@@ -246,6 +256,10 @@ bool BPFTargetLowering::isZExtFree(SDValue Val, EVT VT2) const { + return TargetLoweringBase::isZExtFree(Val, VT2); + } + ++unsigned BPFTargetLowering::getJumpTableEncoding() const { ++ return MachineJumpTableInfo::EK_BlockAddress; ++} ++ + BPFTargetLowering::ConstraintType + BPFTargetLowering::getConstraintType(StringRef Constraint) const { + if (Constraint.size() == 1) { +@@ -316,10 +330,14 @@ SDValue BPFTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const { + report_fatal_error("unimplemented opcode: " + Twine(Op.getOpcode())); + case ISD::BR_CC: + return LowerBR_CC(Op, DAG); ++ case ISD::JumpTable: ++ return LowerJumpTable(Op, DAG); + case ISD::GlobalAddress: + return LowerGlobalAddress(Op, DAG); + case ISD::ConstantPool: + return LowerConstantPool(Op, DAG); ++ case ISD::BlockAddress: ++ return LowerBlockAddress(Op, DAG); + case ISD::SELECT_CC: + return LowerSELECT_CC(Op, DAG); + case ISD::SDIV: +@@ -780,6 +798,11 @@ SDValue BPFTargetLowering::LowerTRAP(SDValue Op, SelectionDAG &DAG) const { + return LowerCall(CLI, InVals); + } + ++SDValue BPFTargetLowering::LowerJumpTable(SDValue Op, SelectionDAG &DAG) const { ++ JumpTableSDNode *N = cast(Op); ++ return getAddr(N, DAG); ++} ++ + const char *BPFTargetLowering::getTargetNodeName(unsigned Opcode) const { + switch ((BPFISD::NodeType)Opcode) { + case BPFISD::FIRST_NUMBER: +@@ -800,17 +823,17 @@ const char *BPFTargetLowering::getTargetNodeName(unsigned Opcode) const { + return nullptr; + } + +-static SDValue getTargetNode(GlobalAddressSDNode *N, const SDLoc &DL, EVT Ty, +- SelectionDAG &DAG, unsigned Flags) { +- return DAG.getTargetGlobalAddress(N->getGlobal(), DL, Ty, 0, Flags); +-} +- + static SDValue getTargetNode(ConstantPoolSDNode *N, const SDLoc &DL, EVT Ty, + SelectionDAG &DAG, unsigned Flags) { + return DAG.getTargetConstantPool(N->getConstVal(), Ty, N->getAlign(), + N->getOffset(), Flags); + } + ++static SDValue getTargetNode(JumpTableSDNode *N, const SDLoc &DL, EVT Ty, ++ SelectionDAG &DAG, unsigned Flags) { ++ return DAG.getTargetJumpTable(N->getIndex(), Ty, Flags); ++} ++ + template + SDValue BPFTargetLowering::getAddr(NodeTy *N, SelectionDAG &DAG, + unsigned Flags) const { +@@ -827,7 +850,15 @@ SDValue BPFTargetLowering::LowerGlobalAddress(SDValue Op, + if (N->getOffset() != 0) + report_fatal_error("invalid offset for global address: " + + Twine(N->getOffset())); +- return getAddr(N, DAG); ++ ++ const GlobalValue *GVal = N->getGlobal(); ++ SDLoc DL(Op); ++ ++ // Wrap it in a TargetGlobalAddress ++ SDValue Addr = DAG.getTargetGlobalAddress(GVal, DL, MVT::i64); ++ ++ // Emit pseudo instruction ++ return SDValue(DAG.getMachineNode(BPF::LDIMM64, DL, MVT::i64, Addr), 0); + } + + SDValue BPFTargetLowering::LowerConstantPool(SDValue Op, +@@ -837,6 +868,18 @@ SDValue BPFTargetLowering::LowerConstantPool(SDValue Op, + return getAddr(N, DAG); + } + ++SDValue BPFTargetLowering::LowerBlockAddress(SDValue Op, ++ SelectionDAG &DAG) const { ++ const BlockAddress *BA = cast(Op)->getBlockAddress(); ++ SDLoc DL(Op); ++ ++ // Wrap it in a TargetBlockAddress ++ SDValue Addr = DAG.getTargetBlockAddress(BA, MVT::i64); ++ ++ // Emit pseudo instruction ++ return SDValue(DAG.getMachineNode(BPF::LDIMM64, DL, MVT::i64, Addr), 0); ++} ++ + unsigned + BPFTargetLowering::EmitSubregExt(MachineInstr &MI, MachineBasicBlock *BB, + unsigned Reg, bool isSigned) const { +@@ -900,6 +943,86 @@ BPFTargetLowering::EmitInstrWithCustomInserterMemcpy(MachineInstr &MI, + return BB; + } + ++MachineBasicBlock *BPFTargetLowering::EmitInstrWithCustomInserterLDimm64( ++ MachineInstr &MI, MachineBasicBlock *BB) const { ++ MachineFunction *MF = BB->getParent(); ++ const BPFInstrInfo *TII = MF->getSubtarget().getInstrInfo(); ++ const TargetRegisterClass *RC = getRegClassFor(MVT::i64); ++ MachineRegisterInfo &RegInfo = MF->getRegInfo(); ++ DebugLoc DL = MI.getDebugLoc(); ++ ++ // Build address taken map for Global Varaibles and BlockAddresses ++ DenseMap AddressTakenBBs; ++ for (MachineBasicBlock &MBB : *MF) { ++ if (const BasicBlock *BB = MBB.getBasicBlock()) ++ if (BB->hasAddressTaken()) ++ AddressTakenBBs[BB] = &MBB; ++ } ++ ++ MachineOperand &MO = MI.getOperand(1); ++ assert(MO.isBlockAddress() || MO.isGlobal()); ++ ++ MCRegister ResultReg = MI.getOperand(0).getReg(); ++ Register TmpReg = RegInfo.createVirtualRegister(RC); ++ ++ std::vector Targets; ++ unsigned JTI; ++ ++ if (MO.isBlockAddress()) { ++ auto *BA = MO.getBlockAddress(); ++ MachineBasicBlock *TgtMBB = AddressTakenBBs[BA->getBasicBlock()]; ++ assert(TgtMBB); ++ ++ Targets.push_back(TgtMBB); ++ JTI = MF->getOrCreateJumpTableInfo(getJumpTableEncoding()) ++ ->createJumpTableIndex(Targets); ++ ++ BuildMI(*BB, MI, DL, TII->get(BPF::LD_imm64), TmpReg) ++ .addJumpTableIndex(JTI); ++ BuildMI(*BB, MI, DL, TII->get(BPF::LDD), ResultReg) ++ .addReg(TmpReg) ++ .addImm(0); ++ MI.eraseFromParent(); ++ return BB; ++ } ++ ++ // Helper: emit LD_imm64 with operand GlobalAddress or JumpTable ++ auto emitLDImm64 = [&](const GlobalValue *GV = nullptr, unsigned JTI = -1) { ++ auto MIB = BuildMI(*BB, MI, DL, TII->get(BPF::LD_imm64), ResultReg); ++ if (GV) ++ MIB.addGlobalAddress(GV); ++ else ++ MIB.addJumpTableIndex(JTI); ++ MI.eraseFromParent(); ++ return BB; ++ }; ++ ++ // Must be a global at this point ++ const GlobalValue *GVal = MO.getGlobal(); ++ const auto *GV = dyn_cast(GVal); ++ ++ if (!GV || GV->getLinkage() != GlobalValue::PrivateLinkage || ++ !GV->isConstant() || !GV->hasInitializer()) ++ return emitLDImm64(GVal); ++ ++ const auto *CA = dyn_cast(GV->getInitializer()); ++ if (!CA) ++ return emitLDImm64(GVal); ++ ++ for (const Use &Op : CA->operands()) { ++ if (!isa(Op)) ++ return emitLDImm64(GVal); ++ auto *BA = cast(Op); ++ MachineBasicBlock *TgtMBB = AddressTakenBBs[BA->getBasicBlock()]; ++ assert(TgtMBB); ++ Targets.push_back(TgtMBB); ++ } ++ ++ JTI = MF->getOrCreateJumpTableInfo(getJumpTableEncoding()) ++ ->createJumpTableIndex(Targets); ++ return emitLDImm64(nullptr, JTI); ++} ++ + MachineBasicBlock * + BPFTargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI, + MachineBasicBlock *BB) const { +@@ -912,6 +1035,7 @@ BPFTargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI, + Opc == BPF::Select_32_64); + + bool isMemcpyOp = Opc == BPF::MEMCPY; ++ bool isLDimm64Op = Opc == BPF::LDIMM64; + + #ifndef NDEBUG + bool isSelectRIOp = (Opc == BPF::Select_Ri || +@@ -919,13 +1043,16 @@ BPFTargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI, + Opc == BPF::Select_Ri_32 || + Opc == BPF::Select_Ri_32_64); + +- if (!(isSelectRROp || isSelectRIOp || isMemcpyOp)) ++ if (!(isSelectRROp || isSelectRIOp || isMemcpyOp || isLDimm64Op)) + report_fatal_error("unhandled instruction type: " + Twine(Opc)); + #endif + + if (isMemcpyOp) + return EmitInstrWithCustomInserterMemcpy(MI, BB); + ++ if (isLDimm64Op) ++ return EmitInstrWithCustomInserterLDimm64(MI, BB); ++ + bool is32BitCmp = (Opc == BPF::Select_32 || + Opc == BPF::Select_32_64 || + Opc == BPF::Select_Ri_32 || +diff --git a/llvm/lib/Target/BPF/BPFISelLowering.h b/llvm/lib/Target/BPF/BPFISelLowering.h +index 8f60261c10e9..5243d4944667 100644 +--- a/llvm/lib/Target/BPF/BPFISelLowering.h ++++ b/llvm/lib/Target/BPF/BPFISelLowering.h +@@ -66,6 +66,8 @@ public: + + MVT getScalarShiftAmountTy(const DataLayout &, EVT) const override; + ++ unsigned getJumpTableEncoding() const override; ++ + private: + // Control Instruction Selection Features + bool HasAlu32; +@@ -81,6 +83,8 @@ private: + SDValue LowerConstantPool(SDValue Op, SelectionDAG &DAG) const; + SDValue LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) const; + SDValue LowerTRAP(SDValue Op, SelectionDAG &DAG) const; ++ SDValue LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const; ++ SDValue LowerJumpTable(SDValue Op, SelectionDAG &DAG) const; + + template + SDValue getAddr(NodeTy *N, SelectionDAG &DAG, unsigned Flags = 0) const; +@@ -163,7 +167,9 @@ private: + MachineBasicBlock * EmitInstrWithCustomInserterMemcpy(MachineInstr &MI, + MachineBasicBlock *BB) + const; +- ++ MachineBasicBlock * ++ EmitInstrWithCustomInserterLDimm64(MachineInstr &MI, ++ MachineBasicBlock *BB) const; + }; + } + +diff --git a/llvm/lib/Target/BPF/BPFInstrInfo.cpp b/llvm/lib/Target/BPF/BPFInstrInfo.cpp +index 70bc163615f6..bf2b4213201d 100644 +--- a/llvm/lib/Target/BPF/BPFInstrInfo.cpp ++++ b/llvm/lib/Target/BPF/BPFInstrInfo.cpp +@@ -181,6 +181,11 @@ bool BPFInstrInfo::analyzeBranch(MachineBasicBlock &MBB, + if (!isUnpredicatedTerminator(*I)) + break; + ++ // From base method doc: ... returning true if it cannot be understood ... ++ // Indirect branch has multiple destinations and no true/false concepts. ++ if (I->isIndirectBranch()) ++ return true; ++ + // A terminator that isn't a branch can't easily be handled + // by this analysis. + if (!I->isBranch()) +@@ -259,3 +264,43 @@ unsigned BPFInstrInfo::removeBranch(MachineBasicBlock &MBB, + + return Count; + } ++ ++int BPFInstrInfo::getJumpTableIndex(const MachineInstr &MI) const { ++ if (MI.getOpcode() != BPF::JX) ++ return -1; ++ ++ // The pattern looks like: ++ // %0 = LD_imm64 %jump-table.0 ; load jump-table address ++ // %1 = ADD_rr %0, $another_reg ; address + offset ++ // %2 = LDD %1, 0 ; load the actual label ++ // JX %2 ++ const MachineFunction &MF = *MI.getParent()->getParent(); ++ const MachineRegisterInfo &MRI = MF.getRegInfo(); ++ ++ Register Reg = MI.getOperand(0).getReg(); ++ if (!Reg.isVirtual()) ++ return -1; ++ MachineInstr *Ldd = MRI.getUniqueVRegDef(Reg); ++ if (Ldd == nullptr || Ldd->getOpcode() != BPF::LDD) ++ return -1; ++ ++ Reg = Ldd->getOperand(1).getReg(); ++ if (!Reg.isVirtual()) ++ return -1; ++ MachineInstr *Add = MRI.getUniqueVRegDef(Reg); ++ if (Add == nullptr || Add->getOpcode() != BPF::ADD_rr) ++ return -1; ++ ++ Reg = Add->getOperand(1).getReg(); ++ if (!Reg.isVirtual()) ++ return -1; ++ MachineInstr *LDimm64 = MRI.getUniqueVRegDef(Reg); ++ if (LDimm64 == nullptr || LDimm64->getOpcode() != BPF::LD_imm64) ++ return -1; ++ ++ const MachineOperand &MO = LDimm64->getOperand(1); ++ if (!MO.isJTI()) ++ return -1; ++ ++ return MO.getIndex(); ++} +diff --git a/llvm/lib/Target/BPF/BPFInstrInfo.h b/llvm/lib/Target/BPF/BPFInstrInfo.h +index d8bbad44e314..d88e37975980 100644 +--- a/llvm/lib/Target/BPF/BPFInstrInfo.h ++++ b/llvm/lib/Target/BPF/BPFInstrInfo.h +@@ -58,6 +58,9 @@ public: + MachineBasicBlock *FBB, ArrayRef Cond, + const DebugLoc &DL, + int *BytesAdded = nullptr) const override; ++ ++ int getJumpTableIndex(const MachineInstr &MI) const override; ++ + private: + void expandMEMCPY(MachineBasicBlock::iterator) const; + +diff --git a/llvm/lib/Target/BPF/BPFInstrInfo.td b/llvm/lib/Target/BPF/BPFInstrInfo.td +index b21f1a0eee3b..9d3ac7ffa6ff 100644 +--- a/llvm/lib/Target/BPF/BPFInstrInfo.td ++++ b/llvm/lib/Target/BPF/BPFInstrInfo.td +@@ -61,6 +61,7 @@ def BPFNoMovsx : Predicate<"!Subtarget->hasMovsx()">; + def BPFNoBswap : Predicate<"!Subtarget->hasBswap()">; + def BPFHasStoreImm : Predicate<"Subtarget->hasStoreImm()">; + def BPFHasLoadAcqStoreRel : Predicate<"Subtarget->hasLoadAcqStoreRel()">; ++def BPFHasGotox : Predicate<"Subtarget->hasGotox()">; + + class ImmediateAsmOperand : AsmOperandClass { + let Name = name; +@@ -216,6 +217,18 @@ class JMP_RI + let BPFClass = BPF_JMP; + } + ++class JMP_IND Pattern> ++ : TYPE_ALU_JMP { ++ bits<4> dst; ++ ++ let Inst{51-48} = dst; ++ let BPFClass = BPF_JMP; ++} ++ + class JMP_JCOND Pattern> + : TYPE_ALU_JMP; + defm JSLE : J; + def JCOND : JMP_JCOND; ++ ++let Predicates = [BPFHasGotox] in { ++ let isIndirectBranch = 1, isBarrier = 1 in { ++ def JX : JMP_IND; ++ } ++} + } + + // ALU instructions +@@ -849,8 +868,8 @@ let usesCustomInserter = 1, isCodeGenOnly = 1 in { + } + + // load 64-bit global addr into register +-def : Pat<(BPFWrapper tglobaladdr:$in), (LD_imm64 tglobaladdr:$in)>; + def : Pat<(BPFWrapper tconstpool:$in), (LD_imm64 tconstpool:$in)>; ++def : Pat<(BPFWrapper tjumptable:$in), (LD_imm64 tjumptable:$in)>; + + // 0xffffFFFF doesn't fit into simm32, optimize common case + def : Pat<(i64 (and (i64 GPR:$src), 0xffffFFFF)), +@@ -1372,3 +1391,8 @@ let usesCustomInserter = 1, isCodeGenOnly = 1 in { + "#memcpy dst: $dst, src: $src, len: $len, align: $align", + [(BPFmemcpy GPR:$dst, GPR:$src, imm:$len, imm:$align)]>; + } ++ ++// For GlobalValue and BlockAddress. ++let usesCustomInserter = 1, isCodeGenOnly = 1 in { ++ def LDIMM64 : Pseudo<(outs GPR:$dst), (ins i64imm:$addr), "", []>; ++} +diff --git a/llvm/lib/Target/BPF/BPFMCInstLower.cpp b/llvm/lib/Target/BPF/BPFMCInstLower.cpp +index 040a1fb75070..7d671d2c464e 100644 +--- a/llvm/lib/Target/BPF/BPFMCInstLower.cpp ++++ b/llvm/lib/Target/BPF/BPFMCInstLower.cpp +@@ -12,6 +12,8 @@ + //===----------------------------------------------------------------------===// + + #include "BPFMCInstLower.h" ++#include "BPFAsmPrinter.h" ++#include "BPFISelLowering.h" + #include "llvm/CodeGen/AsmPrinter.h" + #include "llvm/CodeGen/MachineBasicBlock.h" + #include "llvm/CodeGen/MachineInstr.h" +@@ -19,6 +21,7 @@ + #include "llvm/MC/MCContext.h" + #include "llvm/MC/MCExpr.h" + #include "llvm/MC/MCInst.h" ++#include "llvm/MC/MCStreamer.h" + #include "llvm/Support/ErrorHandling.h" + #include "llvm/Support/raw_ostream.h" + using namespace llvm; +@@ -77,6 +80,9 @@ void BPFMCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const { + case MachineOperand::MO_ConstantPoolIndex: + MCOp = LowerSymbolOperand(MO, Printer.GetCPISymbol(MO.getIndex())); + break; ++ case MachineOperand::MO_JumpTableIndex: ++ MCOp = LowerSymbolOperand(MO, Printer.getJTPublicSymbol(MO.getIndex())); ++ break; + } + + OutMI.addOperand(MCOp); +diff --git a/llvm/lib/Target/BPF/BPFMCInstLower.h b/llvm/lib/Target/BPF/BPFMCInstLower.h +index 4bd0f1f0bf1c..483edd9a0283 100644 +--- a/llvm/lib/Target/BPF/BPFMCInstLower.h ++++ b/llvm/lib/Target/BPF/BPFMCInstLower.h +@@ -12,7 +12,7 @@ + #include "llvm/Support/Compiler.h" + + namespace llvm { +-class AsmPrinter; ++class BPFAsmPrinter; + class MCContext; + class MCInst; + class MCOperand; +@@ -24,10 +24,10 @@ class MachineOperand; + class LLVM_LIBRARY_VISIBILITY BPFMCInstLower { + MCContext &Ctx; + +- AsmPrinter &Printer; ++ BPFAsmPrinter &Printer; + + public: +- BPFMCInstLower(MCContext &ctx, AsmPrinter &printer) ++ BPFMCInstLower(MCContext &ctx, BPFAsmPrinter &printer) + : Ctx(ctx), Printer(printer) {} + void Lower(const MachineInstr *MI, MCInst &OutMI) const; + +diff --git a/llvm/lib/Target/BPF/BPFSubtarget.cpp b/llvm/lib/Target/BPF/BPFSubtarget.cpp +index 4167547680b1..a11aa6933147 100644 +--- a/llvm/lib/Target/BPF/BPFSubtarget.cpp ++++ b/llvm/lib/Target/BPF/BPFSubtarget.cpp +@@ -43,6 +43,8 @@ static cl::opt + static cl::opt Disable_load_acq_store_rel( + "disable-load-acq-store-rel", cl::Hidden, cl::init(false), + cl::desc("Disable load-acquire and store-release insns")); ++static cl::opt Disable_gotox("disable-gotox", cl::Hidden, cl::init(false), ++ cl::desc("Disable gotox insn")); + + void BPFSubtarget::anchor() {} + +@@ -66,6 +68,7 @@ void BPFSubtarget::initializeEnvironment() { + HasGotol = false; + HasStoreImm = false; + HasLoadAcqStoreRel = false; ++ HasGotox = false; + } + + void BPFSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { +@@ -96,6 +99,7 @@ void BPFSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { + HasGotol = !Disable_gotol; + HasStoreImm = !Disable_StoreImm; + HasLoadAcqStoreRel = !Disable_load_acq_store_rel; ++ HasGotox = !Disable_gotox; + return; + } + } +diff --git a/llvm/lib/Target/BPF/BPFSubtarget.h b/llvm/lib/Target/BPF/BPFSubtarget.h +index aed2211265e2..e870dfdc85ec 100644 +--- a/llvm/lib/Target/BPF/BPFSubtarget.h ++++ b/llvm/lib/Target/BPF/BPFSubtarget.h +@@ -65,7 +65,7 @@ protected: + + // whether cpu v4 insns are enabled. + bool HasLdsx, HasMovsx, HasBswap, HasSdivSmod, HasGotol, HasStoreImm, +- HasLoadAcqStoreRel; ++ HasLoadAcqStoreRel, HasGotox; + + std::unique_ptr CallLoweringInfo; + std::unique_ptr InstSelector; +@@ -94,6 +94,7 @@ public: + bool hasGotol() const { return HasGotol; } + bool hasStoreImm() const { return HasStoreImm; } + bool hasLoadAcqStoreRel() const { return HasLoadAcqStoreRel; } ++ bool hasGotox() const { return HasGotox; } + + bool isLittleEndian() const { return IsLittleEndian; } + +diff --git a/llvm/lib/Target/BPF/BPFTargetLoweringObjectFile.cpp b/llvm/lib/Target/BPF/BPFTargetLoweringObjectFile.cpp +new file mode 100644 +index 000000000000..997f09870bad +--- /dev/null ++++ b/llvm/lib/Target/BPF/BPFTargetLoweringObjectFile.cpp +@@ -0,0 +1,19 @@ ++//===------------------ BPFTargetLoweringObjectFile.cpp -------------------===// ++// ++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. ++// See https://llvm.org/LICENSE.txt for license information. ++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception ++// ++//===----------------------------------------------------------------------===// ++ ++#include "BPFTargetLoweringObjectFile.h" ++#include "llvm/MC/MCContext.h" ++#include "llvm/MC/MCSectionELF.h" ++ ++using namespace llvm; ++ ++MCSection *BPFTargetLoweringObjectFileELF::getSectionForJumpTable( ++ const Function &F, const TargetMachine &TM, ++ const MachineJumpTableEntry *JTE) const { ++ return getContext().getELFSection(".jumptables", ELF::SHT_PROGBITS, 0); ++} +diff --git a/llvm/lib/Target/BPF/BPFTargetLoweringObjectFile.h b/llvm/lib/Target/BPF/BPFTargetLoweringObjectFile.h +new file mode 100644 +index 000000000000..f3064c0c8cb8 +--- /dev/null ++++ b/llvm/lib/Target/BPF/BPFTargetLoweringObjectFile.h +@@ -0,0 +1,25 @@ ++//===============- BPFTargetLoweringObjectFile.h -*- C++ -*-================// ++// ++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. ++// See https://llvm.org/LICENSE.txt for license information. ++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception ++// ++//===----------------------------------------------------------------------===// ++ ++#ifndef LLVM_LIB_TARGET_BPF_BPFTARGETLOWERINGOBJECTFILE ++#define LLVM_LIB_TARGET_BPF_BPFTARGETLOWERINGOBJECTFILE ++ ++#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h" ++#include "llvm/Target/TargetLoweringObjectFile.h" ++ ++namespace llvm { ++class BPFTargetLoweringObjectFileELF : public TargetLoweringObjectFileELF { ++ ++public: ++ virtual MCSection * ++ getSectionForJumpTable(const Function &F, const TargetMachine &TM, ++ const MachineJumpTableEntry *JTE) const override; ++}; ++} // namespace llvm ++ ++#endif // LLVM_LIB_TARGET_BPF_BPFTARGETLOWERINGOBJECTFILE +diff --git a/llvm/lib/Target/BPF/BPFTargetMachine.cpp b/llvm/lib/Target/BPF/BPFTargetMachine.cpp +index 527a48035457..d538b6fe1167 100644 +--- a/llvm/lib/Target/BPF/BPFTargetMachine.cpp ++++ b/llvm/lib/Target/BPF/BPFTargetMachine.cpp +@@ -12,6 +12,7 @@ + + #include "BPFTargetMachine.h" + #include "BPF.h" ++#include "BPFTargetLoweringObjectFile.h" + #include "BPFTargetTransformInfo.h" + #include "MCTargetDesc/BPFMCAsmInfo.h" + #include "TargetInfo/BPFTargetInfo.h" +@@ -80,7 +81,7 @@ BPFTargetMachine::BPFTargetMachine(const Target &T, const Triple &TT, + : CodeGenTargetMachineImpl(T, computeDataLayout(TT), TT, CPU, FS, Options, + getEffectiveRelocModel(RM), + getEffectiveCodeModel(CM, CodeModel::Small), OL), +- TLOF(std::make_unique()), ++ TLOF(std::make_unique()), + Subtarget(TT, std::string(CPU), std::string(FS), *this) { + if (!DisableCheckUnreachable) { + this->Options.TrapUnreachable = true; +diff --git a/llvm/lib/Target/BPF/CMakeLists.txt b/llvm/lib/Target/BPF/CMakeLists.txt +index eade4cacb710..3678f1335ca3 100644 +--- a/llvm/lib/Target/BPF/CMakeLists.txt ++++ b/llvm/lib/Target/BPF/CMakeLists.txt +@@ -37,6 +37,7 @@ add_llvm_target(BPFCodeGen + BPFRegisterInfo.cpp + BPFSelectionDAGInfo.cpp + BPFSubtarget.cpp ++ BPFTargetLoweringObjectFile.cpp + BPFTargetMachine.cpp + BPFMIPeephole.cpp + BPFMIChecking.cpp +diff --git a/llvm/test/CodeGen/BPF/jump_table_blockaddr.ll b/llvm/test/CodeGen/BPF/jump_table_blockaddr.ll +new file mode 100644 +index 000000000000..d5a1d63b644a +--- /dev/null ++++ b/llvm/test/CodeGen/BPF/jump_table_blockaddr.ll +@@ -0,0 +1,91 @@ ++; Checks generated using command: ++; llvm/utils/update_test_body.py llvm/test/CodeGen/BPF/jump_table_blockaddr.ll ++ ++; RUN: rm -rf %t && split-file %s %t && cd %t ++; RUN: llc -march=bpf -mcpu=v4 < test.ll | FileCheck %s ++; ++; Source code: ++; int bar(int a) { ++; __label__ l1, l2; ++; void * volatile tgt; ++; int ret = 0; ++; if (a) ++; tgt = &&l1; // synthetic jump table generated here ++; else ++; tgt = &&l2; // another synthetic jump table ++; goto *tgt; ++; l1: ret += 1; ++; l2: ret += 2; ++; return ret; ++; } ++; ++; Compilation Flags: ++; clang --target=bpf -mcpu=v4 -O2 -emit-llvm -S test.c ++ ++.ifdef GEN ++;--- test.ll ++define dso_local range(i32 2, 4) i32 @bar(i32 noundef %a) local_unnamed_addr{ ++entry: ++ %tgt = alloca ptr, align 8 ++ %tobool.not = icmp eq i32 %a, 0 ++ %. = select i1 %tobool.not, ptr blockaddress(@bar, %l2), ptr blockaddress(@bar, %l1) ++ store volatile ptr %., ptr %tgt, align 8 ++ %tgt.0.tgt.0.tgt.0.tgt.0. = load volatile ptr, ptr %tgt, align 8 ++ indirectbr ptr %tgt.0.tgt.0.tgt.0.tgt.0., [label %l1, label %l2] ++ ++l1: ; preds = %entry ++ br label %l2 ++ ++l2: ; preds = %l1, %entry ++ %ret.0 = phi i32 [ 3, %l1 ], [ 2, %entry ] ++ ret i32 %ret.0 ++} ++ ++;--- gen ++echo "" ++echo "; Generated checks follow" ++echo ";" ++llc -march=bpf -mcpu=v4 < test.ll \ ++ | awk '/# -- End function/ {p=0} /@function/ {p=1} p {print "; CHECK" ": " $0}' ++ ++.endif ++ ++; Generated checks follow ++; ++; CHECK: .type bar,@function ++; CHECK: bar: # @bar ++; CHECK: .Lbar$local: ++; CHECK: .type .Lbar$local,@function ++; CHECK: .cfi_startproc ++; CHECK: # %bb.0: # %entry ++; CHECK: r2 = BPF.JT.0.0 ll ++; CHECK: r2 = *(u64 *)(r2 + 0) ++; CHECK: r3 = BPF.JT.0.1 ll ++; CHECK: r3 = *(u64 *)(r3 + 0) ++; CHECK: if w1 == 0 goto LBB0_2 ++; CHECK: # %bb.1: # %entry ++; CHECK: r3 = r2 ++; CHECK: LBB0_2: # %entry ++; CHECK: *(u64 *)(r10 - 8) = r3 ++; CHECK: r1 = *(u64 *)(r10 - 8) ++; CHECK: gotox r1 ++; CHECK: .Ltmp0: # Block address taken ++; CHECK: LBB0_3: # %l1 ++; CHECK: w0 = 3 ++; CHECK: goto LBB0_5 ++; CHECK: .Ltmp1: # Block address taken ++; CHECK: LBB0_4: # %l2 ++; CHECK: w0 = 2 ++; CHECK: LBB0_5: # %.split ++; CHECK: exit ++; CHECK: .Lfunc_end0: ++; CHECK: .size bar, .Lfunc_end0-bar ++; CHECK: .size .Lbar$local, .Lfunc_end0-bar ++; CHECK: .cfi_endproc ++; CHECK: .section .jumptables,"",@progbits ++; CHECK: BPF.JT.0.0: ++; CHECK: .quad LBB0_3 ++; CHECK: .size BPF.JT.0.0, 8 ++; CHECK: BPF.JT.0.1: ++; CHECK: .quad LBB0_4 ++; CHECK: .size BPF.JT.0.1, 8 +diff --git a/llvm/test/CodeGen/BPF/jump_table_global_var.ll b/llvm/test/CodeGen/BPF/jump_table_global_var.ll +new file mode 100644 +index 000000000000..bbca46850843 +--- /dev/null ++++ b/llvm/test/CodeGen/BPF/jump_table_global_var.ll +@@ -0,0 +1,83 @@ ++; Checks generated using command: ++; llvm/utils/update_test_body.py llvm/test/CodeGen/BPF/jump_table_global_var.ll ++ ++; RUN: rm -rf %t && split-file %s %t && cd %t ++; RUN: llc -march=bpf -mcpu=v4 < test.ll | FileCheck %s ++; ++; Source code: ++; int foo(unsigned a) { ++; __label__ l1, l2; ++; void *jt1[] = {[0]=&&l1, [1]=&&l2}; ++; int ret = 0; ++; ++; goto *jt1[a % 2]; ++; l1: ret += 1; ++; l2: ret += 3; ++; return ret; ++; } ++; ++; Compilation Flags: ++; clang --target=bpf -mcpu=v4 -O2 -emit-llvm -S test.c ++ ++.ifdef GEN ++;--- test.ll ++@__const.foo.jt1 = private unnamed_addr constant [2 x ptr] [ptr blockaddress(@foo, %l1), ptr blockaddress(@foo, %l2)], align 8 ++ ++define dso_local range(i32 3, 5) i32 @foo(i32 noundef %a) local_unnamed_addr { ++entry: ++ %rem = and i32 %a, 1 ++ %idxprom = zext nneg i32 %rem to i64 ++ %arrayidx = getelementptr inbounds nuw [2 x ptr], ptr @__const.foo.jt1, i64 0, i64 %idxprom ++ %0 = load ptr, ptr %arrayidx, align 8 ++ indirectbr ptr %0, [label %l1, label %l2] ++ ++l1: ; preds = %entry ++ br label %l2 ++ ++l2: ; preds = %l1, %entry ++ %ret.0 = phi i32 [ 4, %l1 ], [ 3, %entry ] ++ ret i32 %ret.0 ++} ++ ++;--- gen ++echo "" ++echo "; Generated checks follow" ++echo ";" ++llc -march=bpf -mcpu=v4 < test.ll \ ++ | awk '/# -- End function/ {p=0} /@function/ {p=1} p {print "; CHECK" ": " $0}' ++ ++.endif ++ ++; Generated checks follow ++; ++; CHECK: .type foo,@function ++; CHECK: foo: # @foo ++; CHECK: .Lfoo$local: ++; CHECK: .type .Lfoo$local,@function ++; CHECK: .cfi_startproc ++; CHECK: # %bb.0: # %entry ++; CHECK: # kill: def $w1 killed $w1 def $r1 ++; CHECK: w1 &= 1 ++; CHECK: r1 <<= 3 ++; CHECK: r2 = BPF.JT.0.0 ll ++; CHECK: r2 += r1 ++; CHECK: r1 = *(u64 *)(r2 + 0) ++; CHECK: gotox r1 ++; CHECK: .Ltmp0: # Block address taken ++; CHECK: LBB0_1: # %l1 ++; CHECK: w0 = 4 ++; CHECK: goto LBB0_3 ++; CHECK: .Ltmp1: # Block address taken ++; CHECK: LBB0_2: # %l2 ++; CHECK: w0 = 3 ++; CHECK: LBB0_3: # %.split ++; CHECK: exit ++; CHECK: .Lfunc_end0: ++; CHECK: .size foo, .Lfunc_end0-foo ++; CHECK: .size .Lfoo$local, .Lfunc_end0-foo ++; CHECK: .cfi_endproc ++; CHECK: .section .jumptables,"",@progbits ++; CHECK: BPF.JT.0.0: ++; CHECK: .quad LBB0_1 ++; CHECK: .quad LBB0_2 ++; CHECK: .size BPF.JT.0.0, 16 +diff --git a/llvm/test/CodeGen/BPF/jump_table_switch_stmt.ll b/llvm/test/CodeGen/BPF/jump_table_switch_stmt.ll +new file mode 100644 +index 000000000000..682b025d665d +--- /dev/null ++++ b/llvm/test/CodeGen/BPF/jump_table_switch_stmt.ll +@@ -0,0 +1,126 @@ ++; Checks generated using command: ++; llvm/utils/update_test_body.py llvm/test/CodeGen/BPF/jump_table_switch_stmt.ll ++ ++; RUN: rm -rf %t && split-file %s %t && cd %t ++; RUN: llc -march=bpf -mcpu=v4 -bpf-min-jump-table-entries=3 < test.ll | FileCheck %s ++; ++; Source code: ++; int ret_user; ++; int foo(int a) ++; { ++; switch (a) { ++; case 1: ret_user = 18; break; ++; case 20: ret_user = 6; break; ++; case 30: ret_user = 2; break; ++; default: break; ++; } ++; return 0; ++; } ++; ++; Compilation Flags: ++; clang --target=bpf -mcpu=v4 -O2 -emit-llvm -S test.c ++ ++.ifdef GEN ++;--- test.ll ++@ret_user = dso_local local_unnamed_addr global i32 0, align 4 ++ ++define dso_local noundef i32 @foo(i32 noundef %a) local_unnamed_addr { ++entry: ++ switch i32 %a, label %sw.epilog [ ++ i32 1, label %sw.epilog.sink.split ++ i32 20, label %sw.bb1 ++ i32 30, label %sw.bb2 ++ ] ++ ++sw.bb1: ; preds = %entry ++ br label %sw.epilog.sink.split ++ ++sw.bb2: ; preds = %entry ++ br label %sw.epilog.sink.split ++ ++sw.epilog.sink.split: ; preds = %entry, %sw.bb1, %sw.bb2 ++ %.sink = phi i32 [ 2, %sw.bb2 ], [ 6, %sw.bb1 ], [ 18, %entry ] ++ store i32 %.sink, ptr @ret_user, align 4 ++ br label %sw.epilog ++ ++sw.epilog: ; preds = %sw.epilog.sink.split, %entry ++ ret i32 0 ++} ++ ++;--- gen ++echo "" ++echo "; Generated checks follow" ++echo ";" ++llc -march=bpf -mcpu=v4 -bpf-min-jump-table-entries=3 < test.ll \ ++ | awk '/# -- End function/ {p=0} /@function/ {p=1} p {print "; CHECK" ": " $0}' ++ ++.endif ++ ++; Generated checks follow ++; ++; CHECK: .type foo,@function ++; CHECK: foo: # @foo ++; CHECK: .Lfoo$local: ++; CHECK: .type .Lfoo$local,@function ++; CHECK: .cfi_startproc ++; CHECK: # %bb.0: # %entry ++; CHECK: # kill: def $w1 killed $w1 def $r1 ++; CHECK: w1 += -1 ++; CHECK: if w1 > 29 goto LBB0_5 ++; CHECK: # %bb.1: # %entry ++; CHECK: w2 = 18 ++; CHECK: r1 <<= 3 ++; CHECK: r3 = BPF.JT.0.0 ll ++; CHECK: r4 = BPF.JT.0.0 ll ++; CHECK: r4 += r1 ++; CHECK: r1 = *(u64 *)(r4 + 0) ++; CHECK: r3 += r1 ++; CHECK: gotox r3 ++; CHECK: LBB0_2: # %sw.bb1 ++; CHECK: w2 = 6 ++; CHECK: goto LBB0_4 ++; CHECK: LBB0_3: # %sw.bb2 ++; CHECK: w2 = 2 ++; CHECK: LBB0_4: # %sw.epilog.sink.split ++; CHECK: r1 = ret_user ll ++; CHECK: *(u32 *)(r1 + 0) = w2 ++; CHECK: LBB0_5: # %sw.epilog ++; CHECK: w0 = 0 ++; CHECK: exit ++; CHECK: .Lfunc_end0: ++; CHECK: .size foo, .Lfunc_end0-foo ++; CHECK: .size .Lfoo$local, .Lfunc_end0-foo ++; CHECK: .cfi_endproc ++; CHECK: .section .jumptables,"",@progbits ++; CHECK: BPF.JT.0.0: ++; CHECK: .quad LBB0_4 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_2 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_5 ++; CHECK: .quad LBB0_3 ++; CHECK: .size BPF.JT.0.0, 240 +-- +2.50.1 + diff --git a/0001-CGP-Bail-out-if-Base-Scaled-Reg-does-not-dominate-in.patch b/0001-CGP-Bail-out-if-Base-Scaled-Reg-does-not-dominate-in.patch new file mode 100644 index 0000000..0c2d067 --- /dev/null +++ b/0001-CGP-Bail-out-if-Base-Scaled-Reg-does-not-dominate-in.patch @@ -0,0 +1,131 @@ +From dde30a47313bf52fef02bbcb1de931a8d725659f Mon Sep 17 00:00:00 2001 +From: Florian Hahn +Date: Fri, 6 Jun 2025 12:38:30 +0100 +Subject: [PATCH] [CGP] Bail out if (Base|Scaled)Reg does not dominate insert + point. (#142949) + +(Base|Scaled)Reg may not dominate the chosen insert point, if there are +multiple uses of the address. Bail out if that's the case, otherwise we +will generate invalid IR. + +In some cases, we could probably adjust the insert point or hoist the +(Base|Scaled)Reg. + +Fixes https://github.com/llvm/llvm-project/issues/142830. + +PR: https://github.com/llvm/llvm-project/pull/142949 +--- + llvm/lib/CodeGen/CodeGenPrepare.cpp | 13 +++- + .../X86/sink-addrmode-reg-does-not-geps.ll | 76 +++++++++++++++++++ + 2 files changed, 87 insertions(+), 2 deletions(-) + create mode 100644 llvm/test/Transforms/CodeGenPrepare/X86/sink-addrmode-reg-does-not-geps.ll + +diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp +index 822ed6283117..32348a899683 100644 +--- a/llvm/lib/CodeGen/CodeGenPrepare.cpp ++++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp +@@ -5945,8 +5945,17 @@ bool CodeGenPrepare::optimizeMemoryInst(Instruction *MemoryInst, Value *Addr, + // The current BB may be optimized multiple times, we can't guarantee the + // reuse of Addr happens later, call findInsertPos to find an appropriate + // insert position. +- IRBuilder<> Builder(MemoryInst->getParent(), +- findInsertPos(Addr, MemoryInst, SunkAddr)); ++ auto InsertPos = findInsertPos(Addr, MemoryInst, SunkAddr); ++ ++ // TODO: Adjust insert point considering (Base|Scaled)Reg if possible. ++ if (!SunkAddr) { ++ auto &DT = getDT(*MemoryInst->getFunction()); ++ if ((AddrMode.BaseReg && !DT.dominates(AddrMode.BaseReg, &*InsertPos)) || ++ (AddrMode.ScaledReg && !DT.dominates(AddrMode.ScaledReg, &*InsertPos))) ++ return Modified; ++ } ++ ++ IRBuilder<> Builder(MemoryInst->getParent(), InsertPos); + + if (SunkAddr) { + LLVM_DEBUG(dbgs() << "CGP: Reusing nonlocal addrmode: " << AddrMode +diff --git a/llvm/test/Transforms/CodeGenPrepare/X86/sink-addrmode-reg-does-not-geps.ll b/llvm/test/Transforms/CodeGenPrepare/X86/sink-addrmode-reg-does-not-geps.ll +new file mode 100644 +index 000000000000..1640bafbd0bf +--- /dev/null ++++ b/llvm/test/Transforms/CodeGenPrepare/X86/sink-addrmode-reg-does-not-geps.ll +@@ -0,0 +1,76 @@ ++; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 ++; RUN: opt -S -passes='require,function(codegenprepare)' %s | FileCheck %s ++ ++target triple = "x86_64-unknown-linux" ++ ++declare i1 @cond(float) ++ ++define void @scaled_reg_does_not_dominate_insert_point(ptr %src) { ++; CHECK-LABEL: define void @scaled_reg_does_not_dominate_insert_point( ++; CHECK-SAME: ptr [[SRC:%.*]]) { ++; CHECK-NEXT: [[BB:.*]]: ++; CHECK-NEXT: br label %[[LOOP:.*]] ++; CHECK: [[LOOP]]: ++; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, %[[BB]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ] ++; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1 ++; CHECK-NEXT: [[SUNKADDR2:%.*]] = mul i64 [[IV_NEXT]], 2 ++; CHECK-NEXT: [[SUNKADDR3:%.*]] = getelementptr i8, ptr [[SRC]], i64 [[SUNKADDR2]] ++; CHECK-NEXT: [[SUNKADDR4:%.*]] = getelementptr i8, ptr [[SUNKADDR3]], i64 6 ++; CHECK-NEXT: [[L_0:%.*]] = load float, ptr [[SUNKADDR4]], align 4 ++; CHECK-NEXT: [[SUNKADDR:%.*]] = mul i64 [[IV]], 2 ++; CHECK-NEXT: [[SUNKADDR1:%.*]] = getelementptr i8, ptr [[SRC]], i64 [[SUNKADDR]] ++; CHECK-NEXT: [[L_1:%.*]] = load float, ptr [[SUNKADDR1]], align 4 ++; CHECK-NEXT: [[TMP0:%.*]] = call i1 @cond(float [[L_0]]) ++; CHECK-NEXT: [[C:%.*]] = call i1 @cond(float [[L_1]]) ++; CHECK-NEXT: br i1 [[C]], label %[[LOOP]], label %[[EXIT:.*]] ++; CHECK: [[EXIT]]: ++; CHECK-NEXT: ret void ++; ++bb: ++ %gep.base = getelementptr i8, ptr %src, i64 8 ++ br label %loop ++ ++loop: ++ %iv = phi i64 [ 0, %bb ], [ %iv.next, %loop ] ++ %iv.shl = shl i64 %iv, 1 ++ %gep.shl = getelementptr i8, ptr %gep.base, i64 %iv.shl ++ %gep.sub = getelementptr i8, ptr %gep.shl, i64 -8 ++ %iv.next = add i64 %iv, 1 ++ %l.0 = load float, ptr %gep.shl, align 4 ++ %l.1 = load float, ptr %gep.sub, align 4 ++ call i1 @cond(float %l.0) ++ %c = call i1 @cond(float %l.1) ++ br i1 %c, label %loop, label %exit ++ ++exit: ++ ret void ++} ++ ++define void @check_dt_after_modifying_cfg(ptr %dst, i64 %x, i8 %y, i8 %z) { ++; CHECK-LABEL: define void @check_dt_after_modifying_cfg( ++; CHECK-SAME: ptr [[DST:%.*]], i64 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) { ++; CHECK-NEXT: [[ENTRY:.*]]: ++; CHECK-NEXT: [[OFFSET:%.*]] = lshr i64 [[X]], 2 ++; CHECK-NEXT: [[SEL_FROZEN:%.*]] = freeze i8 [[Z]] ++; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[SEL_FROZEN]], 0 ++; CHECK-NEXT: br i1 [[CMP]], label %[[SELECT_END:.*]], label %[[SELECT_FALSE_SINK:.*]] ++; CHECK: [[SELECT_FALSE_SINK]]: ++; CHECK-NEXT: [[SMIN:%.*]] = tail call i8 @llvm.smin.i8(i8 [[Y]], i8 0) ++; CHECK-NEXT: br label %[[SELECT_END]] ++; CHECK: [[SELECT_END]]: ++; CHECK-NEXT: [[SEL:%.*]] = phi i8 [ 0, %[[ENTRY]] ], [ [[SMIN]], %[[SELECT_FALSE_SINK]] ] ++; CHECK-NEXT: [[SUNKADDR:%.*]] = getelementptr i8, ptr [[DST]], i64 [[OFFSET]] ++; CHECK-NEXT: store i8 [[SEL]], ptr [[SUNKADDR]], align 1 ++; CHECK-NEXT: ret void ++; ++entry: ++ %offset = lshr i64 %x, 2 ++ %gep.dst = getelementptr i8, ptr %dst, i64 %offset ++ %smin = tail call i8 @llvm.smin.i8(i8 %y, i8 0) ++ %cmp = icmp slt i8 %z, 0 ++ %sel = select i1 %cmp, i8 0, i8 %smin ++ store i8 %sel, ptr %gep.dst, align 1 ++ ret void ++} ++ ++declare i8 @llvm.smin.i8(i8, i8) #0 +-- +2.50.1 + diff --git a/0001-SystemZ-Fix-ICE-with-i128-i64-uaddo-carry-chain.patch b/0001-SystemZ-Fix-ICE-with-i128-i64-uaddo-carry-chain.patch deleted file mode 100644 index 4ec2d1d..0000000 --- a/0001-SystemZ-Fix-ICE-with-i128-i64-uaddo-carry-chain.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 6d5697f7cb4e933d2f176c46b7ac05a9cbaeb8b6 Mon Sep 17 00:00:00 2001 -From: Ulrich Weigand -Date: Thu, 23 Jan 2025 19:11:18 +0100 -Subject: [PATCH] [SystemZ] Fix ICE with i128->i64 uaddo carry chain - -We can only optimize a uaddo_carry via specialized instruction -if the carry was produced by another uaddo(_carry) instruction; -there is already a check for that. - -However, i128 uaddo(_carry) use a completely different mechanism; -they indicate carry in a vector register instead of the CC flag. -Thus, we must also check that we don't mix those two - that check -has been missing. - -Fixes: https://github.com/llvm/llvm-project/issues/124001 ---- - .../Target/SystemZ/SystemZISelLowering.cpp | 12 ++++++---- - llvm/test/CodeGen/SystemZ/pr124001.ll | 23 +++++++++++++++++++ - 2 files changed, 31 insertions(+), 4 deletions(-) - create mode 100644 llvm/test/CodeGen/SystemZ/pr124001.ll - -diff --git a/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp b/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp -index 4040ab6d4510..1fb31c26e20d 100644 ---- a/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp -+++ b/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp -@@ -4708,15 +4708,19 @@ SDValue SystemZTargetLowering::lowerXALUO(SDValue Op, - } - - static bool isAddCarryChain(SDValue Carry) { -- while (Carry.getOpcode() == ISD::UADDO_CARRY) -+ while (Carry.getOpcode() == ISD::UADDO_CARRY && -+ Carry->getValueType(0) != MVT::i128) - Carry = Carry.getOperand(2); -- return Carry.getOpcode() == ISD::UADDO; -+ return Carry.getOpcode() == ISD::UADDO && -+ Carry->getValueType(0) != MVT::i128; - } - - static bool isSubBorrowChain(SDValue Carry) { -- while (Carry.getOpcode() == ISD::USUBO_CARRY) -+ while (Carry.getOpcode() == ISD::USUBO_CARRY && -+ Carry->getValueType(0) != MVT::i128) - Carry = Carry.getOperand(2); -- return Carry.getOpcode() == ISD::USUBO; -+ return Carry.getOpcode() == ISD::USUBO && -+ Carry->getValueType(0) != MVT::i128; - } - - // Lower UADDO_CARRY/USUBO_CARRY nodes. -diff --git a/llvm/test/CodeGen/SystemZ/pr124001.ll b/llvm/test/CodeGen/SystemZ/pr124001.ll -new file mode 100644 -index 000000000000..9cf630a55dd6 ---- /dev/null -+++ b/llvm/test/CodeGen/SystemZ/pr124001.ll -@@ -0,0 +1,23 @@ -+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 -+; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s -+ -+define i64 @test(i128 %in) { -+; CHECK-LABEL: test: -+; CHECK: # %bb.0: -+; CHECK-NEXT: larl %r1, .LCPI0_0 -+; CHECK-NEXT: vl %v0, 0(%r2), 3 -+; CHECK-NEXT: vl %v1, 0(%r1), 3 -+; CHECK-NEXT: vaccq %v0, %v0, %v1 -+; CHECK-NEXT: vlgvg %r1, %v0, 1 -+; CHECK-NEXT: la %r2, 1(%r1) -+; CHECK-NEXT: br %r14 -+ %1 = tail call { i128, i1 } @llvm.uadd.with.overflow.i128(i128 %in, i128 1) -+ %2 = extractvalue { i128, i1 } %1, 1 -+ %3 = zext i1 %2 to i64 -+ %4 = add i64 %3, 1 -+ ret i64 %4 -+} -+ -+declare { i128, i1 } @llvm.uadd.with.overflow.i128(i128, i128) #0 -+ -+attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } --- -2.48.1 - diff --git a/0001-clang-Add-a-hack-to-fix-the-offload-build-with-the-m.patch b/0001-clang-Add-a-hack-to-fix-the-offload-build-with-the-m.patch new file mode 100644 index 0000000..9184a37 --- /dev/null +++ b/0001-clang-Add-a-hack-to-fix-the-offload-build-with-the-m.patch @@ -0,0 +1,27 @@ +From f028fc042ef2875a13c6abf3828626a313e4a8e6 Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Fri, 1 Aug 2025 15:38:22 +0000 +Subject: [PATCH] clang: Add a hack to fix the offload build with the + mtls-dialect option + +--- + clang/lib/Driver/ToolChains/CommonArgs.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp +index 097d186ad8ea..0dc9e60f8428 100644 +--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp ++++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp +@@ -920,6 +920,9 @@ bool tools::isTLSDESCEnabled(const ToolChain &TC, + } else if (Triple.isX86()) { + SupportedArgument = V == "gnu" || V == "gnu2"; + EnableTLSDESC = V == "gnu2"; ++ } else if( Triple.isGPU()) { ++ // HACK To fix the offload build. ++ return false; + } else { + Unsupported = true; + } +-- +2.49.0 + diff --git a/0002-BPF-Remove-unused-weak-symbol-__bpf_trap-166003.patch b/0002-BPF-Remove-unused-weak-symbol-__bpf_trap-166003.patch new file mode 100644 index 0000000..0c7e018 --- /dev/null +++ b/0002-BPF-Remove-unused-weak-symbol-__bpf_trap-166003.patch @@ -0,0 +1,130 @@ +From be4fa19ecf95d94d3ef46be183d3d4b4ebb6bb47 Mon Sep 17 00:00:00 2001 +From: yonghong-song +Date: Mon, 3 Nov 2025 11:11:47 -0800 +Subject: [PATCH] [BPF] Remove unused weak symbol __bpf_trap (#166003) + +Nikita Popov reported an issue ([1]) where a dangling weak symbol +__bpf_trap is in the final binary and this caused libbpf failing like +below: + + $ veristat -v ./t.o + Processing 't.o'... + libbpf: elf: skipping unrecognized data section(4) .eh_frame + libbpf: elf: skipping relo section(5) .rel.eh_frame for section(4) .eh_frame + libbpf: failed to find BTF for extern '__bpf_trap': -3 + Failed to open './t.o': -3 + +In llvm, the dag selection phase generates __bpf_trap in code. Later the +UnreachableBlockElim pass removed __bpf_trap from the code, but +__bpf_trap symbol survives in the symbol table. + +Having a dangling __bpf_trap weak symbol is not good for old kernels as +seen in the above veristat failure. Although users could use compiler +flag `-mllvm -bpf-disable-trap-unreachable` to workaround the issue, +this patch fixed the issue by removing the dangling __bpf_trap. + + [1] https://github.com/llvm/llvm-project/issues/165696 + +(cherry picked from commit 8fd1bf2f8c9e6e7c4bc5f6915a9d52bb3672601b) +--- + llvm/lib/Target/BPF/BPFAsmPrinter.cpp | 24 ++++++++++++++++++++ + llvm/lib/Target/BPF/BPFAsmPrinter.h | 1 + + llvm/test/CodeGen/BPF/bpf_trap.ll | 32 +++++++++++++++++++++++++++ + 3 files changed, 57 insertions(+) + create mode 100644 llvm/test/CodeGen/BPF/bpf_trap.ll + +diff --git a/llvm/lib/Target/BPF/BPFAsmPrinter.cpp b/llvm/lib/Target/BPF/BPFAsmPrinter.cpp +index 77dc4a75a7d6..b2a82040ee82 100644 +--- a/llvm/lib/Target/BPF/BPFAsmPrinter.cpp ++++ b/llvm/lib/Target/BPF/BPFAsmPrinter.cpp +@@ -88,6 +88,16 @@ bool BPFAsmPrinter::doFinalization(Module &M) { + } + } + ++ for (GlobalObject &GO : M.global_objects()) { ++ if (!GO.hasExternalWeakLinkage()) ++ continue; ++ ++ if (!SawTrapCall && GO.getName() == BPF_TRAP) { ++ GO.eraseFromParent(); ++ break; ++ } ++ } ++ + return AsmPrinter::doFinalization(M); + } + +@@ -160,6 +170,20 @@ bool BPFAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, + } + + void BPFAsmPrinter::emitInstruction(const MachineInstr *MI) { ++ if (MI->isCall()) { ++ for (const MachineOperand &Op : MI->operands()) { ++ if (Op.isGlobal()) { ++ if (const GlobalValue *GV = Op.getGlobal()) ++ if (GV->getName() == BPF_TRAP) ++ SawTrapCall = true; ++ } else if (Op.isSymbol()) { ++ if (const MCSymbol *Sym = Op.getMCSymbol()) ++ if (Sym->getName() == BPF_TRAP) ++ SawTrapCall = true; ++ } ++ } ++ } ++ + BPF_MC::verifyInstructionPredicates(MI->getOpcode(), + getSubtargetInfo().getFeatureBits()); + +diff --git a/llvm/lib/Target/BPF/BPFAsmPrinter.h b/llvm/lib/Target/BPF/BPFAsmPrinter.h +index 0cfb2839c8ff..60a285ea2b7d 100644 +--- a/llvm/lib/Target/BPF/BPFAsmPrinter.h ++++ b/llvm/lib/Target/BPF/BPFAsmPrinter.h +@@ -39,6 +39,7 @@ public: + private: + BTFDebug *BTF; + TargetMachine &TM; ++ bool SawTrapCall = false; + + const BPFTargetMachine &getBTM() const; + }; +diff --git a/llvm/test/CodeGen/BPF/bpf_trap.ll b/llvm/test/CodeGen/BPF/bpf_trap.ll +new file mode 100644 +index 000000000000..ab8df5ff7cb0 +--- /dev/null ++++ b/llvm/test/CodeGen/BPF/bpf_trap.ll +@@ -0,0 +1,32 @@ ++; RUN: llc < %s | FileCheck %s ++; ++target triple = "bpf" ++ ++define i32 @test(i8 %x) { ++entry: ++ %0 = and i8 %x, 3 ++ switch i8 %0, label %default.unreachable4 [ ++ i8 0, label %return ++ i8 1, label %sw.bb1 ++ i8 2, label %sw.bb2 ++ i8 3, label %sw.bb3 ++ ] ++ ++sw.bb1: ; preds = %entry ++ br label %return ++ ++sw.bb2: ; preds = %entry ++ br label %return ++ ++sw.bb3: ; preds = %entry ++ br label %return ++ ++default.unreachable4: ; preds = %entry ++ unreachable ++ ++return: ; preds = %entry, %sw.bb3, %sw.bb2, %sw.bb1 ++ %retval.0 = phi i32 [ 12, %sw.bb1 ], [ 43, %sw.bb2 ], [ 54, %sw.bb3 ], [ 32, %entry ] ++ ret i32 %retval.0 ++} ++ ++; CHECK-NOT: __bpf_trap +-- +2.50.1 + diff --git a/changelog b/changelog new file mode 100644 index 0000000..6a50205 --- /dev/null +++ b/changelog @@ -0,0 +1,1013 @@ +* Mon Jul 28 2025 Paul Murphy - 20.1.8-3 +- Backport fix for pgo optimized rust toolchain on ppc64le (rhbz#2382683) +- Backport fix for crbit spill miscompile on ppc64le power9 and power10 (rhbz#2383037) +- Backport fix for build of highway package on ppc64le (rhbz#2383182) + +* Thu Jul 24 2025 Fedora Release Engineering - 20.1.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jul 09 2025 Nikita Popov - 20.1.8-1 +- Update to LLVM 20.1.8 + +* Fri Jun 20 2025 Kashyap Chamarthy - 20.1.7-2 +- Add riscv64 enablement bits; thanks: Songsong Zhang + (U2FsdGVkX1@gmail.com) and David Abdurachmanov (davidlt@rivosinc.com) + +* Thu Jun 19 2025 Nikita Popov - 20.1.7-1 +- Update to LLVM 20.1.7 + +* Tue Jun 17 2025 Nikita Popov - 20.1.6-10 +- Fix llvm-config alternatives handling (rhbz#2361779) + +* Mon Jun 16 2025 Nikita Popov - 20.1.6-9 +- Use libdir suffix in versioned prefix + +* Tue Jun 10 2025 Nikita Popov - 20.1.6-8 +- Invert symlink direction +- Fix i686 multilib installation (rhbz#2365079) + +* Thu Jun 05 2025 Timm Bäder - 20.1.6-7 +- Backport patch to fix rhbz#2363895 + +* Wed Jun 04 2025 Python Maint - 20.1.6-6 +- Rebuilt for Python 3.14 + +* Wed Jun 04 2025 Python Maint - 20.1.6-5 +- Bootstrap for Python 3.14 + +* Wed Jun 04 2025 Python Maint - 20.1.6-4 +- Rebuilt for Python 3.14 + +* Tue Jun 03 2025 Tulio Magno Quites Machado Filho - 20.1.6-3 +- Remove temporary changes on ppc64le + +* Tue Jun 03 2025 Python Maint - 20.1.6-2 +- Rebuilt for Python 3.14 + +* Fri May 30 2025 Nikita Popov - 20.1.6-1 +- Update to LLVM 20.1.6 + +* Mon May 26 2025 Konrad Kleine - 20.1.5-2 +- Build with PGO + +* Thu May 22 2025 Nikita Popov - 20.1.5-1 +- Update to LLVM 20.1.5 + +* Tue May 06 2025 Tom Stellard - 20.1.4-6 +- Fix build on ppc64le with glibc >= 2.42 + +* Tue May 06 2025 Nikita Popov - 20.1.4-5 +- Update to LLVM 20.1.4 + +* Sat Apr 26 2025 Tom Stellard - 20.1.3-2 +- Fix build with glibc >= 2.42 + +* Thu Apr 17 2025 Nikita Popov - 20.1.3-1 +- Update to LLVM 20.1.3 + +* Fri Apr 04 2025 Tom Stellard - 20.1.2-5 +- Drop ARM and Mips targets on RHEL + +* Thu Apr 03 2025 Timm Bäder - 20.1.2-4 +- Remove gpu-loader binaries + +* Thu Apr 03 2025 Nikita Popov - 20.1.2-3 +- Update to LLVM 20.1.2 + +* Tue Apr 01 2025 Miro Hrončok - 20.1.1-2 +- Drop redundant runtime requirement on python3-setuptools from python3-lit + +* Wed Mar 19 2025 Nikita Popov - 20.1.1-1 +- Update to LLVM 20.1.1 + +* Tue Mar 18 2025 Nikita Popov - 20.1.0-2 +- Move clang-scan-deps to clang package (rhbz#2353000) + +* Wed Mar 05 2025 Nikita Popov - 20.1.0-1 +- Update to LLVM 20.1.0 + +* Thu Feb 27 2025 Nikita Popov - 20.1.0~rc3-1 +- Update to LLVM 20 rc 3 + +* Tue Feb 25 2025 Nikita Popov - 19.1.7-11 +- Add clang-devel -> llvm-devel dep (rhbz#2342979) + +* Thu Feb 20 2025 Yaakov Selkowitz - 19.1.7-10 +- Do not rely on alternatives path + +* Fri Feb 14 2025 Nikita Popov - 19.1.7-9 +- Rename llvm-resource-filesystem -> llvm-filesystem + +* Wed Feb 12 2025 Nikita Popov - 19.1.7-8 +- Backport bolt fix (rhbz#2344830) + +* Wed Feb 12 2025 Nikita Popov - 19.1.7-7 +- Introduce llvm-resource-filesystem + +* Tue Feb 04 2025 Nikita Popov - 19.1.7-6 +- Don't use directory symlinks + +* Fri Jan 31 2025 Konrad Kleine - 19.1.7-5 +- Address installability issue with directories that were turned into symlinks + +* Thu Jan 30 2025 Josh Stone - 19.1.7-4 +- Fix an isel error triggered by Rust 1.85 on s390x + +* Wed Jan 22 2025 Konrad Kleine - 19.1.7-3 +- Add polly + +* Mon Jan 20 2025 Konrad Kleine - 19.1.7-2 +- Add bolt + +* Mon Jan 20 2025 Timm Bäder - 19.1.7-1 +- Update to 19.1.7 + +* Fri Jan 17 2025 Fedora Release Engineering - 19.1.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Tue Dec 24 2024 Konrad Kleine - 19.1.6-3 +- Add libcxx + +* Thu Dec 19 2024 Nikita Popov - 19.1.6-2 +- Fix mlir exports + +* Wed Dec 18 2024 Timm Bäder - 19.1.6-1 +- Update to 19.1.6 + +* Fri Dec 06 2024 Konrad Kleine - 19.1.5-3 +- Fix mlir and openmp tests +- Disable libomp tests on s390x RHEL entirely. + +* Wed Dec 04 2024 Konrad Kleine - 19.1.5-2 +- Add mlir + +* Tue Dec 03 2024 Timm Bäder - 19.1.5-1 +- Update to 19.1.5 + +* Tue Nov 26 2024 Tulio Magno Quites Machado Filho - 19.1.4-2 +- Enable LLVM_ENABLE_ZSTD (rhbz#2321848) + +* Thu Nov 21 2024 Timm Bäder - 19.1.4-1 +- Update to 19.1.4 + +* Tue Nov 19 2024 Konrad Kleine - 19.1.3-4 +- Remove HTML documentation +- Add lldb man pages + +* Mon Nov 18 2024 Josh Stone - 19.1.3-3 +- Fix profiling after a binutils NOTE change (rhbz#2322754) + +* Mon Nov 18 2024 Timm Bäder - 19.1.3-2 +- Install i386 config files on x86_64 + +* Tue Nov 05 2024 Timm Bäder - 19.1.3-1 +- Update to 19.1.3 + +* Tue Sep 24 2024 Maxwell G - 19.1.0-2 +- Add 'Provides: clangd' to the clang-tools-extra subpackage + +* Thu Sep 19 2024 Timm Bäder - 19.1.0-1 +- Update to LLVM 19.1.0 + +* Thu Jul 18 2024 Fedora Release Engineering - 18.1.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu Jul 11 2024 Jesus Checa Hidalgo - 18.1.8-1 +- Update to LLVM 18.1.8 + +* Fri Jun 07 2024 Tom Stellard - 18.1.7-1 +- 18.1.7 Release + +* Tue May 28 2024 Nikita Popov - 18.1.6-2 +- Fix use after free on ppc64le (rhbz#2283525) + +* Sat May 18 2024 Tom Stellard - 18.1.6-1 +- 18.1.6 Release + +* Tue May 14 2024 Tom Stellard - 18.1.3-2 +- Backport fix for rhbz#2275090 + +* Thu Apr 25 2024 Tom Stellard - 18.1.4-1 +- 18.1.4 Release + +* Fri Apr 12 2024 Tom Stellard - 18.1.3-1 +- 18.1.3 Release + +* Thu Mar 21 2024 Zhengyu He - 18.1.2-2 +- Add support for riscv64 + +* Thu Mar 21 2024 Tom Stellard - 18.1.2-1 +- 18.1.2 Release + +* Mon Mar 11 2024 Tom Stellard - 18.1.1-1 +- 18.1.1 Release + +* Tue Feb 27 2024 Tom Stellard - 18.1.0~rc4-1 +- 18.1.0-rc4 Release + +* Tue Feb 20 2024 Tom Stellard - 18.1.0~rc3-1 +- 18.1.0-rc3 Release + +* Thu Feb 01 2024 Nikita Popov - 17.0.6-6 +- Fix crash with -fzero-call-used-regs (rhbz#2262260) + +* Mon Jan 29 2024 Nikita Popov - 17.0.6-5 +- Only use cet-report=error on x86_64 + +* Thu Jan 25 2024 Fedora Release Engineering - 17.0.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 17.0.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Nov 30 2023 Tulio Magno Quites Machado Filho - 17.0.6-2 +- Fix rhbz #2248872 + +* Tue Nov 28 2023 Tulio Magno Quites Machado Filho - 17.0.6-1 +- Update to LLVM 17.0.6 + +* Tue Nov 14 2023 Tulio Magno Quites Machado Filho - 17.0.5-1 +- Update to LLVM 17.0.5 + +* Tue Oct 31 2023 Tulio Magno Quites Machado Filho - 17.0.4-1 +- Update to LLVM 17.0.4 + +* Tue Oct 17 2023 Tulio Magno Quites Machado Filho - 17.0.3-1 +- Update to LLVM 17.0.3 + +* Tue Oct 03 2023 Tulio Magno Quites Machado Filho - 17.0.2-1 +- Update to LLVM 17.0.2 + +* Fri Sep 22 2023 Tulio Magno Quites Machado Filho - 17.0.1~rc4-1 +- Update to LLVM 17.0.1 + +* Tue Sep 05 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc4-1 +- Update to LLVM 17.0.0 RC4 + +* Thu Aug 24 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc3-1 +- Update to LLVM 17.0.0 RC3 + +* Thu Aug 24 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc2-2 +- Temporarily disable a failing test on ppc64le + +* Thu Aug 17 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc2-1 +- Update to LLVM 17.0.0 RC2 + +* Wed Aug 16 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc1-4 +- Disable LTO on i686 + +* Mon Aug 14 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc1-3 +- Re-add patch removed by mistake + +* Tue Aug 01 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc1-2 +- Enable LLVM_UNREACHABLE_OPTIMIZE temporarily + +* Mon Jul 31 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc1-1 +- Update to LLVM 17.0.0 RC1 + +* Mon Jul 31 2023 Tulio Magno Quites Machado Filho - 16.0.6-6 +- Fix rhbz #2224885 + +* Thu Jul 20 2023 Fedora Release Engineering - 16.0.6-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon Jul 10 2023 Tulio Magno Quites Machado Filho - 16.0.6-4 +- Use LLVM_UNITTEST_LINK_FLAGS to reduce link times for unit tests + +* Mon Jul 03 2023 Tulio Magno Quites Machado Filho - 16.0.6-3 +- Improve error messages for unsupported relocs on s390x (rhbz#2216906) +- Disable LLVM_UNREACHABLE_OPTIMIZE + +* Wed Jun 14 2023 Tulio Magno Quites Machado Filho - 16.0.6-1 +- Update to LLVM 16.0.6 + +* Fri Jun 09 2023 Nikita Popov - 16.0.5-2 +- Split off llvm-cmake-utils package + +* Mon Jun 05 2023 Tulio Magno Quites Machado Filho - 16.0.5-1 +- Update to LLVM 16.0.5 + +* Fri May 19 2023 Yaakov Selkowitz - 16.0.4-2 +- Avoid recommonmark dependency in RHEL builds + +* Thu May 18 2023 Tulio Magno Quites Machado Filho - 16.0.4-1 +- Update to LLVM 16.0.4 + +* Tue May 09 2023 Tulio Magno Quites Machado Filho - 16.0.3-1 +- Update to LLVM 16.0.3 + +* Tue Apr 25 2023 Tulio Magno Quites Machado Filho - 16.0.2-1 +- Update to LLVM 16.0.2 + +* Tue Apr 11 2023 Tulio Magno Quites Machado Filho - 16.0.1-1 +- Update to LLVM 16.0.1 + +* Thu Mar 23 2023 Tulio Magno Quites Machado Filho - 16.0.0-2 +- Distribute libllvm_gtest.a and libllvm_gtest_main.a with llvm-googletest +- Stop distributing /usr/share/llvm/src/utils + +* Mon Mar 20 2023 Tulio Magno Quites Machado Filho - 16.0.0-1 +- Update to LLVM 16.0.0 + +* Thu Mar 16 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc4-2 +- Fix the ppc64le triple + +* Tue Mar 14 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc4-1 +- Update to LLVM 16.0.0 RC4 + +* Fri Mar 10 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc3-2 +- Fix llvm-exegesis failures on s390x + +* Wed Feb 22 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc3-1 +- Update to LLVM 16.0.0 RC3 + +* Wed Feb 01 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc1-1 +- Update to LLVM 16.0.0 RC1 + +* Thu Jan 19 2023 Tulio Magno Quites Machado Filho - 15.0.7-3 +- Update license to SPDX identifiers. +- Include the Apache license adopted in 2019. + +* Thu Jan 19 2023 Fedora Release Engineering - 15.0.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jan 12 2023 Nikita Popov - 15.0.7-1 +- Update to LLVM 15.0.7 + +* Mon Jan 09 2023 Tom Stellard - 15.0.6-3 +- Omit frame pointers when building + +* Mon Dec 19 2022 Nikita Popov - 15.0.6-2 +- Remove workaround for rbhz#2048440 + +* Mon Dec 05 2022 Nikita Popov - 15.0.6-1 +- Update to LLVM 15.0.6 + +* Fri Nov 11 2022 Nikita Popov - 15.0.4-2 +- Copy CFLAGS to ASMFLAGs to enable CET in asm files + +* Wed Nov 02 2022 Nikita Popov - 15.0.4-1 +- Update to LLVM 15.0.4 + +* Tue Sep 27 2022 Nikita Popov - 15.0.0-2 +- Export GetHostTriple.cmake + +* Tue Sep 06 2022 Nikita Popov - 15.0.0-1 +- Update to LLVM 15.0.0 + +* Thu Jul 21 2022 Fedora Release Engineering - 14.0.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Jun 17 2022 Timm Bäder - 14.0.5-2 +- Release bump for new redhat-rpm-config + +* Mon Jun 13 2022 Timm Bäder - 14.0.5-1 +- 14.0.5 Release + +* Wed May 18 2022 Tom Stellard - 14.0.3-1 +- 14.0.3 Release + +* Fri Apr 29 2022 Timm Bäder - 14.0.0-2 +- Remove llvm-cmake-devel package + +* Wed Mar 23 2022 Timm Bäder - 14.0.0-1 +- Update to LLVM 14.0.0 + +* Wed Feb 02 2022 Nikita Popov - 13.0.1-1 +- Update to LLVM 13.0.1 final + +* Tue Jan 25 2022 Nikita Popov - 13.0.1~rc3-1 +- Update to LLVM 13.0.1rc3 + +* Thu Jan 20 2022 Fedora Release Engineering - 13.0.1~rc2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jan 13 2022 Nikita Popov - 13.0.1~rc2-1 +- Update to LLVM 13.0.1rc2 + +* Mon Jan 10 2022 Nikita Popov - 13.0.1~rc1-1 +- Upstream 13.0.1 rc1 release + +* Sat Jan 08 2022 Miro Hrončok - 13.0.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Changes/LIBFFI34 + +* Thu Nov 11 2021 Tom Stellard - 13.0.0-7 +- Enable lto on s390x and arm + +* Mon Oct 25 2021 Tom Stellard - 13.0.0-6 +- Build with Thin LTO + +* Mon Oct 18 2021 Tom Stellard - 13.0.0-5 +- Build with clang + +* Fri Oct 08 2021 Tom Stellard - 13.0.0-4 +- Fix default triple on arm + +* Wed Oct 06 2021 Tom Stellard - 13.0.0-3 +- Set default triple + +* Mon Oct 04 2021 Tom Stellard - 13.0.0-2 +- Drop abi_revision from soname + +* Thu Sep 30 2021 Tom Stellard - 13.0.0-1 +- 13.0.0 Release + +* Thu Sep 30 2021 Tom Stellard - 13.0.0~rc4-2 +- Restore config.guess for host triple detection + +* Fri Sep 24 2021 Tom Stellard - 13.0.0~rc4-1 +- 13.0.0-rc4 Release + +* Fri Sep 17 2021 Tom Stellard - 13.0.0~rc3-1 +- 13.0.0-rc3 Release + +* Mon Sep 13 2021 Tom Stellard - 13.0.0~rc1-3 +- Pass LLVM_DEFAULT_TARGET_TRIPLE to cmake + +* Mon Sep 13 2021 Konrad Kleine - 13.0.0~rc1-2 +- Add --without=check option + +* Wed Aug 04 2021 Tom Stellard - 13.0.0~rc1-1 +- 13.0.0-rc1 Release + +* Thu Jul 22 2021 sguelton@redhat.com - 12.0.1-3 +- Maintain versionned link to llvm-config + +* Thu Jul 22 2021 Fedora Release Engineering - 12.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jul 12 2021 Tom Stellard - 12.0.1-1 +- 12.0.1 Release + +* Wed Jun 30 2021 Tom Stellard - llvm-12.0.1~rc3-1 +- 12.0.1-rc3 Release + +* Fri May 28 2021 Tom Stellard - 12.0.1~rc1-2 +- Stop installing lit tests + +* Wed May 26 2021 Tom Stellard - llvm-12.0.1~rc1-1 +- 12.0.1-rc1 Release + +* Mon May 17 2021 sguelton@redhat.com - 12.0.0-7 +- Fix handling of llvm-config + +* Mon May 03 2021 kkleine@redhat.com - 12.0.0-6 +- More verbose builds thanks to python3-psutil + +* Sat May 01 2021 sguelton@redhat.com - 12.0.0-5 +- Fix llvm-config install + +* Tue Apr 27 2021 sguelton@redhat.com - 12.0.0-4 +- Provide default empty value for exec_suffix when not in compat mode + +* Tue Apr 27 2021 sguelton@redhat.com - 12.0.0-3 +- Fix llvm-config install + +* Tue Apr 20 2021 sguelton@redhat.com - 12.0.0-2 +- Backport compat package fix + +* Thu Apr 15 2021 Tom Stellard - 12.0.0-1 +- 12.0.0 Release + +* Thu Apr 08 2021 sguelton@redhat.com - 12.0.0-0.11.rc5 +- New upstream release candidate + +* Tue Apr 06 2021 sguelton@redhat.com - 12.0.0-0.10.rc4 +- Patch test case for compatibility with llvm-test latout + +* Fri Apr 02 2021 sguelton@redhat.com - 12.0.0-0.9.rc4 +- New upstream release candidate + +* Wed Mar 31 2021 Jonathan Wakely - 12.0.0-0.8.rc3 +- Rebuilt for removed libstdc++ symbols (#1937698) + +* Thu Mar 11 2021 sguelton@redhat.com - 12.0.0-0.7.rc3 +- LLVM 12.0.0 rc3 + +* Wed Mar 10 2021 Kalev Lember - 12.0.0-0.6.rc2 +- Add llvm-static(major) provides to the -static subpackage + +* Tue Mar 09 2021 sguelton@redhat.com - 12.0.0-0.5.rc2 +- rebuilt + +* Tue Mar 02 2021 sguelton@redhat.com - 12.0.0-0.4.rc2 +- Change CI working dir + +* Wed Feb 24 2021 sguelton@redhat.com - 12.0.0-0.3.rc2 +- 12.0.0-rc2 release + +* Tue Feb 16 2021 Dave Airlie - 12.0.0-0.2.rc1 +- Enable LLVM_USE_PERF to allow perf integration + +* Tue Feb 2 2021 Serge Guelton - 12.0.0-0.1.rc1 +- 12.0.0-rc1 release + +* Tue Jan 26 2021 Fedora Release Engineering - 11.1.0-0.3.rc2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jan 22 2021 Serge Guelton - 11.1.0-0.2.rc2 +- 11.1.0-rc2 release + +* Thu Jan 14 2021 Serge Guelton - 11.1.0-0.1.rc1 +- 11.1.0-rc1 release + +* Tue Jan 05 2021 Serge Guelton - 11.0.1-3.rc2 +- Waive extra test case + +* Sun Dec 20 2020 sguelton@redhat.com - 11.0.1-2.rc2 +- 11.0.1-rc2 release + +* Tue Dec 01 2020 sguelton@redhat.com - 11.0.1-1.rc1 +- 11.0.1-rc1 release + +* Sat Oct 31 2020 Jeff Law - 11.0.0-2 +- Fix missing #include for gcc-11 + +* Wed Oct 14 2020 Josh Stone - 11.0.0-1 +- Fix coreos-installer test crash on s390x (rhbz#1883457) + +* Mon Oct 12 2020 sguelton@redhat.com - 11.0.0-0.11 +- llvm 11.0.0 - final release + +* Thu Oct 08 2020 sguelton@redhat.com - 11.0.0-0.10.rc6 +- 11.0.0-rc6 + +* Fri Oct 02 2020 sguelton@redhat.com - 11.0.0-0.9.rc5 +- 11.0.0-rc5 Release + +* Sun Sep 27 2020 sguelton@redhat.com - 11.0.0-0.8.rc3 +- Fix NVR + +* Thu Sep 24 2020 sguelton@redhat.com - 11.0.0-0.2.rc3 +- Obsolete patch for rhbz#1862012 + +* Thu Sep 24 2020 sguelton@redhat.com - 11.0.0-0.1.rc3 +- 11.0.0-rc3 Release + +* Wed Sep 02 2020 sguelton@redhat.com - 11.0.0-0.7.rc2 +- Apply upstream patch for rhbz#1862012 + +* Tue Sep 01 2020 sguelton@redhat.com - 11.0.0-0.6.rc2 +- Fix source location + +* Fri Aug 21 2020 Tom Stellard - 11.0.0-0.5.rc2 +- 11.0.0-rc2 Release + +* Wed Aug 19 2020 Tom Stellard - 11.0.0-0.4.rc1 +- Fix regression-tests CI tests + +* Tue Aug 18 2020 Tom Stellard - 11.0.0-0.3.rc1 +- Fix rust crash on ppc64le compiling firefox +- rhbz#1862012 + +* Tue Aug 11 2020 Tom Stellard - 11.0.0-0.2.rc1 +- Install update_cc_test_checks.py script + +* Thu Aug 06 2020 Tom Stellard - 11.0.0-0.1-rc1 +- LLVM 11.0.0-rc1 Release +- Make llvm-devel require llvm-static and llvm-test + +* Tue Aug 04 2020 Tom Stellard - 10.0.0-10 +- Backport upstream patch to fix build with -flto. +- Disable LTO on s390x to work-around unit test failures. + +* Sat Aug 01 2020 sguelton@redhat.com - 10.0.0-9 +- Fix update-alternative uninstall script + +* Sat Aug 01 2020 sguelton@redhat.com - 10.0.0-8 +- Fix gpg verification and update macro usage. + +* Sat Aug 01 2020 Fedora Release Engineering - 10.0.0-7 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 10.0.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild +* Thu Jun 11 2020 sguelton@redhat.com - 10.0.0-5 +- Make llvm-test.tar.gz creation reproducible. + +* Tue Jun 02 2020 sguelton@redhat.com - 10.0.0-4 +- Instruct cmake not to generate RPATH + +* Thu Apr 30 2020 Tom Stellard - 10.0.0-3 +- Install LLVMgold.so symlink in bfd-plugins directory + +* Tue Apr 07 2020 sguelton@redhat.com - 10.0.0-2 +- Do not package UpdateTestChecks tests in llvm-tests +- Apply upstream patch bab5908df to pass gating tests + +* Wed Mar 25 2020 sguelton@redhat.com - 10.0.0-1 +- 10.0.0 final + +* Mon Mar 23 2020 sguelton@redhat.com - 10.0.0-0.6.rc6 +- 10.0.0 rc6 + +* Thu Mar 19 2020 sguelton@redhat.com - 10.0.0-0.5.rc5 +- 10.0.0 rc5 + +* Sat Mar 14 2020 sguelton@redhat.com - 10.0.0-0.4.rc4 +- 10.0.0 rc4 + +* Thu Mar 05 2020 sguelton@redhat.com - 10.0.0-0.3.rc3 +- 10.0.0 rc3 + +* Fri Feb 28 2020 sguelton@redhat.com - 10.0.0-0.2.rc2 +- Remove *_finite support, see rhbz#1803203 + +* Fri Feb 14 2020 sguelton@redhat.com - 10.0.0-0.1.rc2 +- 10.0.0 rc2 + +* Fri Jan 31 2020 sguelton@redhat.com - 10.0.0-0.1.rc1 +- 10.0.0 rc1 + +* Wed Jan 29 2020 Fedora Release Engineering - 9.0.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Jan 21 2020 Tom Stellard - 9.0.1-4 +- Rebuild after previous build failed to strip binaries + +* Fri Jan 17 2020 Tom Stellard - 9.0.1-3 +- Add explicit Requires from sub-packages to llvm-libs + +* Fri Jan 10 2020 Tom Stellard - 9.0.1-2 +- Fix crash with kernel bpf self-tests + +* Thu Dec 19 2019 tstellar@redhat.com - 9.0.1-1 +- 9.0.1 Release + +* Mon Nov 25 2019 sguelton@redhat.com - 9.0.0-4 +- Activate AVR on all architectures + +* Mon Sep 30 2019 Tom Stellard - 9.0.0-3 +- Build libLLVM.so first to avoid OOM errors + +* Fri Sep 27 2019 Tom Stellard - 9.0.0-2 +- Remove unneeded BuildRequires: libstdc++-static + +* Thu Sep 19 2019 sguelton@redhat.com - 9.0.0-1 +- 9.0.0 Release + +* Wed Sep 18 2019 sguelton@redhat.com - 9.0.0-0.5.rc3 +- Support avr target, see rhbz#1718492 + +* Tue Sep 10 2019 Tom Stellard - 9.0.0-0.4.rc3 +- Split out test executables into their own export file + +* Fri Sep 06 2019 Tom Stellard - 9.0.0-0.3.rc3 +- Fix patch for splitting out static library exports + +* Fri Aug 30 2019 Tom Stellard - 9.0.0-0.2.rc3 +- 9.0.0-rc3 Release + +* Thu Aug 01 2019 Tom Stellard - 9.0.0-0.1.rc2 +- 9.0.0-rc2 Release + +* Tue Jul 30 2019 Tom Stellard - 8.0.0-9 +- Sync with llvm8.0 spec file + +* Thu Jul 25 2019 Fedora Release Engineering - 8.0.0-8.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jul 17 2019 Tom Stellard - 8.0.0-8 +- Add provides for the major version of sub-packages + +* Fri May 17 2019 sguelton@redhat.com - 8.0.0-7 +- Fix conflicts between llvm-static = 8 and llvm-dev < 8 around LLVMStaticExports.cmake + +* Wed Apr 24 2019 Tom Stellard - 8.0.0-6 +- Make sure we aren't passing -g on s390x + +* Sat Mar 30 2019 Tom Stellard - 8.0.0-5 +- Enable build rpath while keeping install rpath disabled + +* Wed Mar 27 2019 Tom Stellard - 8.0.0-4 +- Backport r351577 from trunk to fix ninja check failures + +* Tue Mar 26 2019 Tom Stellard - 8.0.0-3 +- Fix ninja check + +* Fri Mar 22 2019 Tom Stellard - 8.0.0-2 +- llvm-test fixes + +* Wed Mar 20 2019 sguelton@redhat.com - 8.0.0-1 +- 8.0.0 final + +* Fri Mar 15 2019 sguelton@redhat.com - 8.0.0-0.6.rc4 +- Activate all backends (rhbz#1689031) + +* Tue Mar 12 2019 sguelton@redhat.com - 8.0.0-0.5.rc4 +- 8.0.0 Release candidate 4 + +* Mon Mar 4 2019 sguelton@redhat.com - 8.0.0-0.4.rc3 +- Move some binaries to -test package, cleanup specfile + +* Mon Mar 4 2019 sguelton@redhat.com - 8.0.0-0.3.rc3 +- 8.0.0 Release candidate 3 + +* Fri Feb 22 2019 sguelton@redhat.com - 8.0.0-0.2.rc2 +- 8.0.0 Release candidate 2 + +* Sat Feb 9 2019 sguelton@redhat.com - 8.0.0-0.1.rc1 +- 8.0.0 Release candidate 1 + +* Fri Feb 01 2019 Fedora Release Engineering - 7.0.1-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 21 2019 Josh Stone - 7.0.1-2 +- Fix discriminators in metadata, rhbz#1668033 + +* Mon Dec 17 2018 sguelton@redhat.com - 7.0.1-1 +- 7.0.1 release + +* Tue Dec 04 2018 sguelton@redhat.com - 7.0.0-5 +- Ensure rpmlint passes on specfile + +* Sat Nov 17 2018 Tom Stellard - 7.0.0-4 +- Install testing libraries for unittests + +* Sat Oct 27 2018 Tom Stellard - 7.0.0-3 +- Fix running unittests as not-root user + +* Thu Sep 27 2018 Tom Stellard - 7.0.0-2 +- Fixes for llvm-test package: +- Add some missing Requires +- Add --threads option to run-lit-tests script +- Set PATH so lit can find tools like count, not, etc. +- Don't hardcode tools directory to /usr/lib64/llvm +- Fix typo in yaml-bench define +- Only print information about failing tests + +* Fri Sep 21 2018 Tom Stellard - 7.0.0-1 +- 7.0.0 Release + +* Thu Sep 13 2018 Tom Stellard - 7.0.0-0.15.rc3 +- Disable rpath on install LLVM and related sub-projects + +* Wed Sep 12 2018 Tom Stellard - 7.0.0-0.14.rc3 +- Remove rpath from executables and libraries + +* Tue Sep 11 2018 Tom Stellard - 7.0.0-0.13.rc3 +- Re-enable arm and aarch64 targets on x86_64 + +* Mon Sep 10 2018 Tom Stellard - 7.0.0-0.12.rc3 +- 7.0.0-rc3 Release + +* Fri Sep 07 2018 Tom Stellard - 7.0.0-0.11.rc2 +- Use python3 shebang for opt-viewewr scripts + +* Thu Aug 30 2018 Tom Stellard - 7.0.0-0.10.rc2 +- Drop all uses of python2 from lit tests + +* Thu Aug 30 2018 Tom Stellard - 7.0.0-0.9.rc2 +- Build the gold plugin on all supported architectures + +* Wed Aug 29 2018 Kevin Fenzi - 7.0.0-0.8.rc2 +- Re-enable debuginfo to avoid 25x size increase. + +* Tue Aug 28 2018 Tom Stellard - 7.0.0-0.7.rc2 +- 7.0.0-rc2 Release + +* Tue Aug 28 2018 Tom Stellard - 7.0.0-0.6.rc1 +- Guard valgrind usage with valgrind_arches macro + +* Thu Aug 23 2018 Tom Stellard - 7.0.0-0.5.rc1 +- Package lit tests and googletest sources. + +* Mon Aug 20 2018 Tom Stellard - 7.0.0-0.4.rc1 +- Re-enable AMDGPU target on ARM rhbz#1618922 + +* Mon Aug 13 2018 Tom Stellard - 7.0.0-0.3.rc1 +- Drop references to TestPlugin.so from cmake files + +* Fri Aug 10 2018 Tom Stellard - 7.0.0-0.2.rc1 +- Fixes for lit tests + +* Fri Aug 10 2018 Tom Stellard - 7.0.0-0.1.rc1 +- 7.0.0-rc1 Release +- Reduce number of enabled targets on all arches. +- Drop s390 detection patch, LLVM does not support s390 codegen. + +* Mon Aug 06 2018 Tom Stellard - 6.0.1-6 +- Backport some fixes needed by mesa and rust + +* Thu Jul 26 2018 Tom Stellard - 6.0.1-5 +- Move libLLVM-6.0.so to llvm6.0-libs. + +* Mon Jul 23 2018 Tom Stellard - 6.0.1-4 +- Rebuild because debuginfo stripping failed with the previous build + +* Fri Jul 13 2018 Tom Stellard - 6.0.1-3 +- Sync specfile with llvm6.0 package + +* Fri Jul 13 2018 Fedora Release Engineering - 6.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jun 25 2018 Tom Stellard - 6.0.1-1 +- 6.0.1 Release + +* Thu Jun 07 2018 Tom Stellard - 6.0.1-0.4.rc2 +- 6.0.1-rc2 + +* Wed Jun 06 2018 Tom Stellard - 6.0.1-0.3.rc1 +- Re-enable all targets to avoid breaking the ABI. + +* Mon Jun 04 2018 Tom Stellard - 6.0.1-0.2.rc1 +- Reduce the number of enabled targets based on the architecture + +* Thu May 10 2018 Tom Stellard - 6.0.1-0.1.rc1 +- 6.0.1 rc1 + +* Tue Mar 27 2018 Tom Stellard - 6.0.0-11 +- Re-enable arm tests that used to hang + +* Thu Mar 22 2018 Tom Stellard - 6.0.0-10 +- Fix testcase in backported patch + +* Tue Mar 20 2018 Tom Stellard - 6.0.0-9 +- Prevent external projects from linking against both static and shared + libraries. rhbz#1558657 + +* Mon Mar 19 2018 Tom Stellard - 6.0.0-8 +- Backport r327651 from trunk rhbz#1554349 + +* Fri Mar 16 2018 Tom Stellard - 6.0.0-7 +- Filter out cxxflags and cflags from llvm-config that aren't supported by clang +- rhbz#1556980 + +* Wed Mar 14 2018 Tom Stellard - 6.0.0-6 +- Enable symbol versioning in libLLVM.so + +* Wed Mar 14 2018 Tom Stellard - 6.0.0-5 +- Stop statically linking libstdc++. This is no longer required by Steam + client, but the steam installer still needs a work-around which should + be handled in the steam package. +* Wed Mar 14 2018 Tom Stellard - 6.0.0-4 +- s/make check/ninja check/ + +* Fri Mar 09 2018 Tom Stellard - 6.0.0-3 +- Backport fix for compile time regression on rust rhbz#1552915 + +* Thu Mar 08 2018 Tom Stellard - 6.0.0-2 +- Build with Ninja: This reduces RPM build time on a 6-core x86_64 builder + from 82 min to 52 min. + +* Thu Mar 08 2018 Tom Stellard - 6.0.0-1 +- 6.0.0 Release + +* Thu Mar 08 2018 Tom Stellard - 6.0.0-0.5.rc2 +- Reduce debuginfo size on i686 to avoid OOM errors during linking + +* Fri Feb 09 2018 Tom Stellard - 6.0.0-0.4.rc2 +- 6.0.1 rc2 + +* Fri Feb 09 2018 Igor Gnatenko - 6.0.0-0.3.rc1 +- Escape macros in %%changelog + +* Thu Feb 08 2018 Fedora Release Engineering - 6.0.0-0.2.rc1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Jan 19 2018 Tom Stellard - 6.0.0-0.1.rc1 +- 6.0.1 rc1 + +* Tue Dec 19 2017 Tom Stellard - 5.0.1-1 +- 5.0.1 Release + +* Mon Nov 20 2017 Tom Stellard - 5.0.0-5 +- Backport debuginfo fix for rust + +* Fri Nov 03 2017 Tom Stellard - 5.0.0-4 +- Reduce debuginfo size for ARM + +* Tue Oct 10 2017 Tom Stellard - 5.0.0-2 +- Reduce memory usage on ARM by disabling debuginfo and some non-ARM targets. + +* Mon Sep 25 2017 Tom Stellard - 5.0.0-1 +- 5.0.0 Release + +* Mon Sep 18 2017 Tom Stellard - 4.0.1-6 +- Add Requires: libedit-devel for llvm-devel + +* Fri Sep 08 2017 Tom Stellard - 4.0.1-5 +- Enable libedit backend for LineEditor API + +* Fri Aug 25 2017 Tom Stellard - 4.0.1-4 +- Enable extra functionality when run the LLVM JIT under valgrind. + +* Thu Aug 03 2017 Fedora Release Engineering - 4.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 4.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jun 21 2017 Tom Stellard - 4.0.1-1 +- 4.0.1 Release + +* Thu Jun 15 2017 Tom Stellard - 4.0.0-6 +- Install llvm utils + +* Thu Jun 08 2017 Tom Stellard - 4.0.0-5 +- Fix docs-llvm-man target + +* Mon May 01 2017 Tom Stellard - 4.0.0-4 +- Make cmake files no longer depend on static libs (rhbz 1388200) + +* Tue Apr 18 2017 Josh Stone - 4.0.0-3 +- Fix computeKnownBits for ARMISD::CMOV (rust-lang/llvm#67) + +* Mon Apr 03 2017 Tom Stellard - 4.0.0-2 +- Simplify spec with rpm macros. + +* Thu Mar 23 2017 Tom Stellard - 4.0.0-1 +- LLVM 4.0.0 Final Release + +* Wed Mar 22 2017 tstellar@redhat.com - 3.9.1-6 +- Fix %%postun sep for -devel package. + +* Mon Mar 13 2017 Tom Stellard - 3.9.1-5 +- Disable failing tests on ARM. + +* Sun Mar 12 2017 Peter Robinson 3.9.1-4 +- Fix missing mask on relocation for aarch64 (rhbz 1429050) + +* Wed Mar 01 2017 Dave Airlie - 3.9.1-3 +- revert upstream radeonsi breaking change. + +* Thu Feb 23 2017 Josh Stone - 3.9.1-2 +- disable sphinx warnings-as-errors + +* Fri Feb 10 2017 Orion Poplawski - 3.9.1-1 +- llvm 3.9.1 + +* Fri Feb 10 2017 Fedora Release Engineering - 3.9.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Nov 29 2016 Josh Stone - 3.9.0-7 +- Apply backports from rust-lang/llvm#55, #57 + +* Tue Nov 01 2016 Dave Airlie - 3.9.0-5 +- apply the patch from -4 + +* Wed Oct 26 2016 Dave Airlie - 3.9.0-4 +- add fix for lldb out-of-tree build + +* Mon Oct 17 2016 Josh Stone - 3.9.0-3 +- Apply backports from rust-lang/llvm#47, #48, #53, #54 + +* Sat Oct 15 2016 Josh Stone - 3.9.0-2 +- Apply an InstCombine backport via rust-lang/llvm#51 + +* Wed Sep 07 2016 Dave Airlie - 3.9.0-1 +- llvm 3.9.0 +- upstream moved where cmake files are packaged. +- upstream dropped CppBackend + +* Wed Jul 13 2016 Adam Jackson - 3.8.1-1 +- llvm 3.8.1 +- Add mips target +- Fix some shared library mispackaging + +* Tue Jun 07 2016 Jan Vcelak - 3.8.0-2 +- fix color support detection on terminal + +* Thu Mar 10 2016 Dave Airlie 3.8.0-1 +- llvm 3.8.0 release + +* Wed Mar 09 2016 Dan Horák 3.8.0-0.3 +- install back memory consumption workaround for s390 + +* Thu Mar 03 2016 Dave Airlie 3.8.0-0.2 +- llvm 3.8.0 rc3 release + +* Fri Feb 19 2016 Dave Airlie 3.8.0-0.1 +- llvm 3.8.0 rc2 release + +* Tue Feb 16 2016 Dan Horák 3.7.1-7 +- recognize s390 as SystemZ when configuring build + +* Sat Feb 13 2016 Dave Airlie 3.7.1-6 +- export C++ API for mesa. + +* Sat Feb 13 2016 Dave Airlie 3.7.1-5 +- reintroduce llvm-static, clang needs it currently. + +* Fri Feb 12 2016 Dave Airlie 3.7.1-4 +- jump back to single llvm library, the split libs aren't working very well. + +* Fri Feb 05 2016 Dave Airlie 3.7.1-3 +- add missing obsoletes (#1303497) + +* Thu Feb 04 2016 Fedora Release Engineering - 3.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jan 07 2016 Jan Vcelak 3.7.1-1 +- new upstream release +- enable gold linker + +* Wed Nov 04 2015 Jan Vcelak 3.7.0-100 +- fix Requires for subpackages on the main package + +* Tue Oct 06 2015 Jan Vcelak 3.7.0-100 +- initial version using cmake build system diff --git a/gating.yaml b/gating.yaml index 8a609d3..f0c9afb 100644 --- a/gating.yaml +++ b/gating.yaml @@ -7,9 +7,22 @@ decision_contexts: - bodhi_update_push_stable_critpath subject_type: koji_build rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./tests/build-gating.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./tests/lld-alternatives.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.installability.functional} --- !Policy product_versions: + # The version number here should match the current rawhide release. + - fedora-44 +decision_contexts: + - bodhi_update_push_stable + - bodhi_update_push_stable_critpath +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpmdeplint.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./tests/kernel-ark-build.functional} +--- !Policy +product_versions: + - rhel-9 - rhel-10 decision_context: osci_compose_gate rules: diff --git a/llvm.spec b/llvm.spec index 91c41ce..f018f1a 100644 --- a/llvm.spec +++ b/llvm.spec @@ -1,9 +1,9 @@ #region globals #region version -%global maj_ver 20 +%global maj_ver 21 %global min_ver 1 -%global patch_ver 8 -#global rc_ver 3 +%global patch_ver 6 +#global rc_ver rc3 %bcond_with snapshot_build %if %{with snapshot_build} @@ -19,17 +19,35 @@ %bcond_with gold %endif +# Enable this in order to disable a lot of features and get to clang as fast +# as possible. This is useful in order to bisect issues affecting LLVM, clang +# or LLD. +%bcond_with fastclang +%if %{with fastclang} +%define bcond_override_default_lldb 0 +%define bcond_override_default_offload 0 +%define bcond_override_default_mlir 0 +%define bcond_override_default_flang 0 +%define bcond_override_default_build_bolt 0 +%define bcond_override_default_polly 0 +%define bcond_override_default_pgo 0 +%define bcond_override_default_libcxx 0 +%define bcond_override_default_lto_build 0 +%define bcond_override_default_check 0 +%define _find_debuginfo_dwz_opts %{nil} +%endif + # Build compat packages llvmN instead of main package for the current LLVM # version. Used on Fedora. %bcond_with compat_build # Bundle compat libraries for a previous LLVM version, as part of llvm-libs and # clang-libs. Used on RHEL. -%bcond_with bundle_compat_lib +%bcond_without bundle_compat_lib %bcond_without check %if %{with bundle_compat_lib} -%global compat_maj_ver 19 -%global compat_ver %{compat_maj_ver}.1.7 +%global compat_maj_ver 20 +%global compat_ver %{compat_maj_ver}.1.8 %endif # Compat builds do not include python-lit @@ -42,21 +60,25 @@ %bcond_without lldb %ifarch ppc64le -%if %{defined rhel} && 0%{?rhel} < 10 && %{maj_ver} >= 21 +%if %{defined rhel} && 0%{?rhel} < 10 # RHEL <= 9 use the IBM long double format, which is not supported by libc. # Since LLVM 21, parts of libc are required in order to build offload. %bcond_with offload %else %bcond_without offload %endif -%elifarch %{ix86} +%else +%ifarch %{ix86} # libomptarget is not supported on 32-bit systems. %bcond_with offload %else %bcond_without offload %endif +%endif -%if %{without compat_build} && 0%{?fedora} >= 41 +# MLIR version 22 started to require nanobind >= 2.9, which is only available +# on Fedora >= 44. +%if %{without compat_build} && %{defined fedora} && (%{maj_ver} < 22 || 0%{?fedora} >= 44) %ifarch %{ix86} %bcond_with mlir %else @@ -66,10 +88,69 @@ %bcond_with mlir %endif +#region flang +%if %{without compat_build} && %{defined fedora} && (%{maj_ver} >= 22 && 0%{?fedora} >= 44) +# Link error on i686. +# s390x is not supported upstream yet. +%ifarch i686 s390x +%bcond_with flang +%else +%bcond_without flang +%endif +%endif + +%if %{with flang} + +# Sanity check for flang +# flang depends on mlir, clang, flang, openmp. +# Make sure those are being built. +%if %{without mlir} +%{error:flang must be built --with=mlir} +%endif + +# Set Fortran build flags to nil because they contain flags that don't apply to flang. +%global build_fflags %{nil} + +%{lua: + +-- Return the maximum number of parallel jobs a build can run based on the +-- amount of maximum memory used per process (per_proc_mem). +function print_max_procs(per_proc_mem) + local f = io.open("/proc/meminfo", "r") + local mem = 0 + local nproc_str = nil + for line in f:lines() do + _, _, mem = string.find(line, "MemTotal:%s+(%d+)%s+kB") + if mem then + break + end + end + f:close() + + local proc_handle = io.popen("nproc") + _, _, nproc_str = string.find(proc_handle:read("*a"), "(%d+)") + proc_handle:close() + local nproc = tonumber(nproc_str) + if nproc < 1 then + nproc = 1 + end + local mem_mb = mem / 1024 + local cpu = math.floor(mem_mb / per_proc_mem) + if cpu < 1 then + cpu = 1 + end + + if cpu > nproc then + cpu = nproc + end + print(cpu) +end +} +%endif +#endregion flang + # The libcxx build condition also enables libcxxabi and libunwind. -# Fedora 41 is the first version that enabled FatLTO for clang-built files. -# Without FatLTO, we can't enable ThinLTO and link using GNU LD. -%if %{without compat_build} && 0%{?fedora} >= 41 +%if %{without compat_build} && %{defined fedora} %bcond_without libcxx %else %bcond_with libcxx @@ -77,7 +158,7 @@ # I've called the build condition "build_bolt" to indicate that this does not # necessarily "use" BOLT in order to build LLVM. -%if %{without compat_build} && 0%{?fedora} >= 41 +%if %{without compat_build} && %{defined fedora} # BOLT only supports aarch64 and x86_64 %ifarch aarch64 x86_64 %bcond_without build_bolt @@ -88,7 +169,7 @@ %bcond_with build_bolt %endif -%if %{without compat_build} && 0%{?fedora} >= 41 +%if %{without compat_build} && %{defined fedora} %bcond_without polly %else %bcond_with polly @@ -98,7 +179,7 @@ %ifarch %{ix86} %bcond_with pgo %else -%if 0%{?fedora} >= 43 || (0%{?rhel} >= 9 && %{maj_ver} >= 21) +%if 0%{?fedora} >= 43 || 0%{?rhel} >= 9 %bcond_without pgo %else %bcond_with pgo @@ -129,8 +210,24 @@ %ifarch %ix86 riscv64 %bcond_with lto_build %else +%if %{defined rhel} && 0%{?rhel} <= 8 +# LTO builds got enabled on Fedora and RHEL >= 9 only. +%bcond_with lto_build +%else %bcond_without lto_build %endif +%endif + +# Historically, LLD was used used at the same combinations that enabled PGO. +# If this changes, we need to update the following lines. +# However, we should be able to link using LLD even if PGO is disabled. +# Reminder: RHEL8 still builds with gcc + ld.bfd. +%if %{with pgo} +%bcond_without use_lld +%else +# RHEL8 still builds with gcc + ld.bfd. +%bcond_with use_lld +%endif # For PGO Disable LTO for now because of LLVMgold.so not found error # Use LLVM_ENABLE_LTO:BOOL=ON flags to enable LTO instead @@ -140,6 +237,7 @@ # We are building with clang for faster/lower memory LTO builds. # See https://docs.fedoraproject.org/en-US/packaging-guidelines/#_compiler_macros +# Reminder: This only works on Fedora and RHEL >= 9. %global toolchain clang # Make sure that we are not building with a newer compiler than the targeted @@ -156,8 +254,10 @@ %global __cxx /usr/bin/clang++-%{host_clang_maj_ver} %endif -%if %{defined rhel} && 0%{?rhel} < 10 -%global gts_version 14 +# The upper bound must remain and never exceed the latest RHEL version with GTS, +# so that this does not apply to ELN or a brand new RHEL version. +%if %{defined rhel} && 0%{?rhel} <= 10 +%global gts_version 15 %endif %if %{defined rhel} && 0%{?rhel} <= 8 @@ -170,18 +270,20 @@ # https://bugzilla.redhat.com/show_bug.cgi?id=2158587 %undefine _include_frame_pointers +# Opt out of https://fedoraproject.org/wiki/Changes/StaticLibraryPreserveDebuginfo +# Debuginfo for LLVM static libraries is huge. +%undefine _preserve_static_debuginfo +# Also make sure find-debuginfo does not waste time on these archives. +# https://bugzilla.redhat.com/show_bug.cgi?id=2390105 +%if 0%{?fedora} >= 43 +%define _find_debuginfo_opts --no-ar-files +%endif + # Suffixless tarball name (essentially: basename -s .tar.xz llvm-project-17.0.6.src.tar.xz) %if %{with snapshot_build} %global src_tarball_dir llvm-project-%{llvm_snapshot_git_revision} %else -%global src_tarball_dir llvm-project-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}.src -%endif - -%global has_crtobjs 1 -%if %{maj_ver} < 21 -%ifarch s390x -%global has_crtobjs 0 -%endif +%global src_tarball_dir llvm-project-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-%{rc_ver}}.src %endif # LLD uses "fast" as the algortithm for generating build-id @@ -218,7 +320,7 @@ %global unprefixed_libdir %{_lib} %if 0%{?rhel} -%global targets_to_build "X86;AMDGPU;PowerPC;NVPTX;SystemZ;AArch64;BPF;WebAssembly;RISCV;RISCV" +%global targets_to_build "X86;AMDGPU;PowerPC;NVPTX;SystemZ;AArch64;BPF;WebAssembly;RISCV" %global experimental_targets_to_build "" %else %global targets_to_build "all" @@ -310,13 +412,21 @@ %endif #endregion PGO globals +#region flang globals +%global pkg_name_flang flang%{pkg_suffix} +#endregion flang globals + #endregion globals #region packages #region main package Name: %{pkg_name_llvm} -Version: %{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}}%{?llvm_snapshot_version_suffix:~%{llvm_snapshot_version_suffix}} +Version: %{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~%{rc_ver}}%{?llvm_snapshot_version_suffix:~%{llvm_snapshot_version_suffix}} +%if 0%{?rhel} == 8 Release: 1%{?dist}.alma.1 +%else +Release: %autorelease +%endif Summary: The Low Level Virtual Machine License: Apache-2.0 WITH LLVM-exception OR NCSA @@ -325,8 +435,8 @@ URL: http://llvm.org %if %{with snapshot_build} Source0: https://github.com/llvm/llvm-project/archive/%{llvm_snapshot_git_revision}.tar.gz %else -Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{src_tarball_dir}.tar.xz -Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-rc%{rc_ver}}/%{src_tarball_dir}.tar.xz.sig +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-%{rc_ver}}/%{src_tarball_dir}.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:-%{rc_ver}}/%{src_tarball_dir}.tar.xz.sig %endif Source6: release-keys.asc @@ -345,6 +455,9 @@ Source3001: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{com Source1000: version.spec.inc %endif +# Only used on RHEL-8, where rpmautospec is not available. +Source1001: changelog + # We've established the habit of numbering patches the following way: # # 0-499: All patches that are unconditionally applied @@ -386,7 +499,6 @@ Patch104: 0001-Driver-Give-devtoolset-path-precedence-over-Installe.patch # Fix LLVMConfig.cmake when symlinks are used. # (https://github.com/llvm/llvm-project/pull/124743 landed in LLVM 21) -Patch1902: 0001-cmake-Resolve-symlink-when-finding-install-prefix.patch Patch2003: 0001-cmake-Resolve-symlink-when-finding-install-prefix.patch #region LLD patches @@ -394,35 +506,53 @@ Patch106: 0001-19-Always-build-shared-libs-for-LLD.patch #endregion LLD patches #region polly patches -Patch107: 0001-20-polly-shared-libs.patch +Patch2102: 0001-20-polly-shared-libs.patch +Patch2202: 0001-22-polly-shared-libs.patch #endregion polly patches #region RHEL patches # RHEL 8 only Patch501: 0001-Fix-page-size-constant-on-aarch64-and-ppc64le.patch +# Backport a fix for https://github.com/llvm/llvm-project/issues/165696 from +# LLVM 22. The first patch is a requirement of the second patch. +# Apply the fix to RHEL8 only because the other distros do not need this fix +# because they already support kfunc __bpf_trap. +Patch502: 0001-BPF-Support-Jump-Table-149715.patch +Patch503: 0002-BPF-Remove-unused-weak-symbol-__bpf_trap-166003.patch #endregion RHEL patches -# Fix an isel error triggered by Rust 1.85 on s390x -# https://github.com/llvm/llvm-project/issues/124001 -Patch1901: 0001-SystemZ-Fix-ICE-with-i128-i64-uaddo-carry-chain.patch - # Fix a pgo miscompilation triggered by building Rust 1.87 with pgo on ppc64le. # https://github.com/llvm/llvm-project/issues/138208 Patch2004: 0001-CodeGenPrepare-Make-sure-instruction-get-from-SunkAd.patch +# Related CGP fix for domination, rhbz#2388223 +Patch2008: 0001-CGP-Bail-out-if-Base-Scaled-Reg-does-not-dominate-in.patch # Fix Power9/Power10 crbit spilling # https://github.com/llvm/llvm-project/pull/146424 -Patch108: 21-146424.patch +Patch2007: 21-146424.patch # Fix for highway package build on ppc64le Patch2005: 0001-PowerPC-Fix-handling-of-undefs-in-the-PPC-isSplatShu.patch Patch2006: 0001-Add-REQUIRES-asserts-to-test-added-in-145149-because.patch +# Fix for offload builds: The DeviceRTL libraries target device code and +# don't support the mtls-dialect flag, so we need to patch the clang driver +# to ignore it for these targets. +Patch2101: 0001-clang-Add-a-hack-to-fix-the-offload-build-with-the-m.patch +Patch2201: 0001-clang-Add-a-hack-to-fix-the-offload-build-with-the-m.patch + %if 0%{?rhel} == 8 %global python3_pkgversion 3.12 %global __python3 /usr/bin/python3.12 %endif +%if %{with fastclang} +# fastclang depends on overriding default conditionals via +# bcond_override_default which is only available on RPM 4.20 and newer. +# More info: +# https://rpm-software-management.github.io/rpm/manual/conditionalbuilds.html#overriding-defaults +BuildRequires: rpm >= 4.20 +%endif %if %{defined gts_version} # Required for 64-bit atomics on i686. BuildRequires: gcc-toolset-%{gts_version}-libatomic-devel @@ -444,9 +574,15 @@ BuildRequires: libffi-devel BuildRequires: ncurses-devel %if %{with pgo} +%if %{defined host_clang_maj_ver} +BuildRequires: lld(major) = %{host_clang_maj_ver} +BuildRequires: compiler-rt(major) = %{host_clang_maj_ver} +BuildRequires: llvm(major) = %{host_clang_maj_ver} +%else BuildRequires: lld BuildRequires: compiler-rt BuildRequires: llvm +%endif %if 0%{run_pgo_perf_comparison} BuildRequires: llvm-test-suite @@ -462,6 +598,10 @@ BuildRequires: python3-scipy %endif %endif +%else +%if %{with use_lld} +BuildRequires: lld +%endif %endif # This intentionally does not use python3_pkgversion. RHEL 8 does not have @@ -494,8 +634,8 @@ BuildRequires: libedit-devel %endif # We need python3-devel for %%py3_shebang_fix BuildRequires: python%{python3_pkgversion}-devel -BuildRequires: python%{python3_pkgversion}-setuptools %if 0%{?rhel} == 8 +BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-rpm-macros %endif @@ -550,7 +690,7 @@ BuildRequires: procps-ng # For reproducible pyc file generation # See https://docs.fedoraproject.org/en-US/packaging-guidelines/Python_Appendix/#_byte_compilation_reproducibility # Since Fedora 41 this happens automatically, and RHEL 8 does not support this. -%if %{without compat_build} && ((%{defined fedora} && 0%{?fedora} < 41) || 0%{?rhel} == 9 || 0%{?rhel} == 10) +%if %{without compat_build} && (0%{?rhel} == 9 || 0%{?rhel} == 10) BuildRequires: /usr/bin/marshalparser %global py_reproducible_pyc_path %{buildroot}%{python3_sitelib} %endif @@ -591,6 +731,9 @@ lit is a tool used by the LLVM project for executing its test suites. Summary: Filesystem package that owns the versioned llvm prefix # Was renamed immediately after introduction. Obsoletes: %{pkg_name_llvm}-resource-filesystem < 20 +%if %{with compat_build} +Conflicts: llvm-filesystem < %{maj_ver}.99 +%endif %description -n %{pkg_name_llvm}-filesystem This packages owns the versioned llvm prefix directory: $libdir/llvm$version @@ -725,7 +868,11 @@ Requires: gcc-toolset-%{gts_version}-gcc-c++ Recommends: %{pkg_name_compiler_rt}%{?_isa} = %{version}-%{release} Requires: %{pkg_name_llvm}-libs = %{version}-%{release} # atomic support is not part of compiler-rt +%if %{defined gts_version} +Recommends: gcc-toolset-%{gts_version}-libatomic-devel +%else Recommends: libatomic%{?_isa} +%endif # libomp-devel is required, so clang can find the omp.h header when compiling # with -fopenmp. Recommends: %{pkg_name_libomp}-devel%{_isa} = %{version}-%{release} @@ -757,6 +904,9 @@ Development header files for clang. %package -n %{pkg_name_clang}-resource-filesystem Summary: Filesystem package that owns the clang resource directory Provides: clang-resource-filesystem(major) = %{maj_ver} +%if %{with compat_build} +Conflicts: clang-resource-filesystem < %{maj_ver}.99 +%endif %description -n %{pkg_name_clang}-resource-filesystem This package owns the clang resouce directory: $libdir/clang/$version/ @@ -907,9 +1057,9 @@ Shared libraries for LLD. %if 0%{?rhel} %package -n %{pkg_name_llvm}-toolset Summary: Package that installs llvm-toolset -Requires: clang = %{version}-%{release} -Requires: llvm = %{version}-%{release} -Requires: lld = %{version}-%{release} +Requires: %{pkg_name_clang} = %{version}-%{release} +Requires: %{pkg_name_llvm} = %{version}-%{release} +Requires: %{pkg_name_lld} = %{version}-%{release} %description -n %{pkg_name_llvm}-toolset This is the main package for llvm-toolset. @@ -943,7 +1093,6 @@ The package contains header files for the LLDB debugger. %if %{without compat_build} %package -n python%{python3_pkgversion}-lldb -%{?python_provide:%python_provide python%{python3_pkgversion}-lldb} Summary: Python module for LLDB Requires: %{pkg_name_lldb}%{?_isa} = %{version}-%{release} @@ -990,7 +1139,6 @@ Requires: %{pkg_name_mlir}-static%{?_isa} = %{version}-%{release} MLIR development files. %package -n python%{python3_pkgversion}-mlir -%{?python_provide:%python_provide python%{python3_pkgversion}-mlir} Summary: MLIR python bindings Requires: python%{python3_pkgversion} @@ -1121,6 +1269,42 @@ Polly header files. %endif #endregion polly packages +#region flang packages +%if %{with flang} +%package -n %{pkg_name_flang} +Summary: a Fortran language front-end designed for integration with LLVM +Requires: %{pkg_name_flang}-runtime%{?_isa} = %{version}-%{release} +# flang installs headers in the clang resource directory +Requires: %{pkg_name_clang}-resource-filesystem%{?_isa} = %{version}-%{release} +# flang implicitly calls ld.bfd when linking and depends on the gcc runtime objects. +Requires: binutils +Requires: gcc +# Up to version 17.0.6-1, flang used to provide a flang-devel package. +# This changed in 17.0.6-2 and all development-related files are now +# distributed in the main flang package. +Obsoletes: %{pkg_name_flang}-devel < 17.0.6-2 + +# We no longer ship flang-doc. +Obsoletes: %{pkg_name_flang}-doc < 22 + +License: Apache-2.0 WITH LLVM-exception +URL: https://flang.llvm.org + +%description -n %{pkg_name_flang} + +Flang is a ground-up implementation of a Fortran front end written in modern +C++. + +%package -n %{pkg_name_flang}-runtime +Summary: Flang runtime libraries +Conflicts: %{pkg_name_flang} < 17.0.6-2 + +%description -n %{pkg_name_flang}-runtime +Flang runtime libraries. + +%endif +#endregion flang packages + #endregion packages #region prep @@ -1159,6 +1343,11 @@ Polly header files. %if %{defined rhel} && 0%{?rhel} == 8 %patch -p1 -P501 +%if %{maj_ver} < 22 +# The following patches have been backported from LLVM 22. +%patch -p1 -P502 +%patch -p1 -P503 +%endif %endif #region LLVM preparation @@ -1209,6 +1398,17 @@ sed -i 's/LLDB_ENABLE_PYTHON/TRUE/' lldb/docs/CMakeLists.txt #endregion prep +#region python buildrequires +%if %{with python_lit} +%if 0%{?rhel} != 8 +%generate_buildrequires + +cd llvm/utils/lit +%pyproject_buildrequires +%endif +%endif +#endregion python buildrequires + #region build %build # TODO(kkleine): In clang we had this %ifarch s390 s390x aarch64 %ix86 ppc64le @@ -1217,7 +1417,7 @@ sed -i 's/LLDB_ENABLE_PYTHON/TRUE/' lldb/docs/CMakeLists.txt %ifarch %ix86 riscv64 %global reduce_debuginfo 1 %endif -%if 0%{?rhel} == 8 +%if 0%{?rhel} == 8 || %{with fastclang} %global reduce_debuginfo 1 %endif @@ -1245,6 +1445,11 @@ sed -i 's/LLDB_ENABLE_PYTHON/TRUE/' lldb/docs/CMakeLists.txt %global projects %{projects};polly %endif +%if %{with flang} +%global projects %{projects};flang +%global runtimes %{runtimes};flang-rt +%endif + %if %{with libcxx} %global runtimes %{runtimes};libcxx;libcxxabi;libunwind %endif @@ -1254,11 +1459,14 @@ sed -i 's/LLDB_ENABLE_PYTHON/TRUE/' lldb/docs/CMakeLists.txt %endif %ifarch x86_64_v2 -%global cfg_file_content --gcc-triple=x86_64-redhat-linux +%global gcc_triple --gcc-triple=x86_64-redhat-linux %else -%global cfg_file_content --gcc-triple=%{_target_cpu}-redhat-linux +%global gcc_triple --gcc-triple=%{_target_cpu}-redhat-linux %endif +%global cfg_file_content %{gcc_triple} +%global cfg_file_content_flang %{gcc_triple} + # We want to use DWARF-5 on all snapshot builds. %if %{without snapshot_build} && %{defined rhel} && 0%{?rhel} < 10 %global cfg_file_content %{cfg_file_content} -gdwarf-4 -g0 @@ -1305,7 +1513,11 @@ OLD_CWD="$PWD" #region LLVM lit %if %{with python_lit} pushd utils/lit +%if 0%{?rhel} == 8 %py3_build +%else +%pyproject_wheel +%endif popd %endif #endregion LLVM lit @@ -1320,7 +1532,6 @@ popd # Any ABI-affecting flags should be in here. %global cmake_common_args \\\ -DCMAKE_BUILD_TYPE=RelWithDebInfo \\\ - -DLLVM_ENABLE_EH=ON \\\ -DLLVM_ENABLE_RTTI=ON \\\ -DLLVM_USE_PERF=ON \\\ -DLLVM_TARGETS_TO_BUILD=%{targets_to_build} \\\ @@ -1330,6 +1541,19 @@ popd -DCLANG_LINK_CLANG_DYLIB=ON \\\ -DLLVM_ENABLE_FFI:BOOL=ON +%if %{maj_ver} >= 22 +%global cmake_common_args %{cmake_common_args} \\\ + -DLLVM_ENABLE_EH=OFF +%else +%global cmake_common_args %{cmake_common_args} \\\ + -DLLVM_ENABLE_EH=ON +%endif + +%if %reduce_debuginfo == 1 + %global cmake_common_args %{cmake_common_args} -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" + %global cmake_common_args %{cmake_common_args} -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" +%endif + %global cmake_config_args %{cmake_common_args} #region clang options @@ -1358,7 +1582,8 @@ popd #region compiler-rt options %global cmake_config_args %{cmake_config_args} \\\ -DCOMPILER_RT_INCLUDE_TESTS:BOOL=OFF \\\ - -DCOMPILER_RT_INSTALL_PATH=%{_prefix}/lib/clang/%{maj_ver} + -DCOMPILER_RT_INSTALL_PATH=%{_prefix}/lib/clang/%{maj_ver} \\\ + -DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL=ON #endregion compiler-rt options #region docs options @@ -1426,7 +1651,6 @@ popd %global cmake_config_args %{cmake_config_args} \\\ -DLLVM_APPEND_VC_REV:BOOL=OFF \\\ -DLLVM_BUILD_EXAMPLES:BOOL=OFF \\\ - -DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL=ON \\\ -DLLVM_BUILD_RUNTIME:BOOL=ON \\\ -DLLVM_BUILD_TOOLS:BOOL=ON \\\ -DLLVM_BUILD_UTILS:BOOL=ON \\\ @@ -1459,6 +1683,7 @@ popd -DMLIR_INSTALL_AGGREGATE_OBJECTS=OFF \\\ -DMLIR_BUILD_MLIR_C_DYLIB=ON \\\ -DMLIR_ENABLE_BINDINGS_PYTHON:BOOL=ON + %endif #endregion mlir options @@ -1466,6 +1691,26 @@ popd %global cmake_config_args %{cmake_config_args} \\\ -DOPENMP_INSTALL_LIBDIR=%{unprefixed_libdir} \\\ -DLIBOMP_INSTALL_ALIASES=OFF + +%if %{maj_ver} >= 22 && %{with offload} +# We reset the cxxflags to "" here because this is compiling for a GPU +# target, where our cflags are either questionable or actively wrong. +%global cmake_config_args %{cmake_config_args} \\\ + -DLLVM_RUNTIME_TARGETS='default;amdgcn-amd-amdhsa;nvptx64-nvidia-cuda' \\\ + -DRUNTIMES_nvptx64-nvidia-cuda_LLVM_ENABLE_RUNTIMES=openmp \\\ + -DRUNTIMES_amdgcn-amd-amdhsa_LLVM_ENABLE_RUNTIMES=openmp \\\ + -DRUNTIMES_amdgcn-amd-amdhsa_CMAKE_CXX_FLAGS="" \\\ + -DRUNTIMES_nvptx64-nvidia-cuda_CMAKE_CXX_FLAGS="" + +%if 0%{?__isa_bits} == 64 +# The following shouldn't be required, but due to a bug, we have to be +# explicit about LLVM_LIBDIR_SUFFIX for nvptx64-nvidia-cuda. +# TODO: Remove this after fixing +# https://github.com/llvm/llvm-project/issues/159762 +%global cmake_config_args %{cmake_config_args} \\\ + -DRUNTIMES_nvptx64-nvidia-cuda_LLVM_LIBDIR_SUFFIX=64 +%endif +%endif #endregion openmp options #region polly options @@ -1475,6 +1720,23 @@ popd %endif #endregion polly options +#region flang options +%if %{with flang} +%global cmake_config_args %{cmake_config_args} \\\ + -DFLANG_INCLUDE_DOCS:BOOL=ON +# Build both, shared and static flang runtime objects. +# See also https://llvm.org/devmtg/2025-04/slides/quick_talk/kruse_flang-rt.pdf +%global cmake_config_args %{cmake_config_args} \\\ + -DFLANG_RT_ENABLE_SHARED:BOOL=ON \\\ + -DFLANG_RT_ENABLE_STATIC:BOOL=ON +# The amount of RAM used per process has been set by trial and error. +# This number may increase/decrease from time to time and may require changes. +# We prefer to be on the safe side in order to avoid spurious errors. +%global cmake_config_args %{cmake_config_args} \\\ + -DFLANG_PARALLEL_COMPILE_JOBS=%{lua: print_max_procs(3072)} +%endif +#endregion flang options + #region test options %global cmake_config_args %{cmake_config_args} \\\ @@ -1484,11 +1746,7 @@ popd -DLLVM_LIT_ARGS="-vv" %if %{with lto_build} -%if 0%{?fedora} >= 41 %global cmake_config_args %{cmake_config_args} -DLLVM_UNITTEST_LINK_FLAGS="-fno-lto" -%else - %global cmake_config_args %{cmake_config_args} -DLLVM_UNITTEST_LINK_FLAGS="-Wl,-plugin-opt=O0" -%endif %endif #endregion test options @@ -1516,11 +1774,6 @@ popd %global cmake_config_args %{cmake_config_args} -DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=ON %endif -%if %reduce_debuginfo == 1 - %global cmake_config_args %{cmake_config_args} -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" - %global cmake_config_args %{cmake_config_args} -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" -%endif - %if 0%{?__isa_bits} == 64 %global cmake_config_args %{cmake_config_args} -DLLVM_LIBDIR_SUFFIX=64 %endif @@ -1546,7 +1799,11 @@ popd # This option uses the NUMBER_OF_LOGICAL_CORES query in CMake which doesn't # work on s390x. # https://gitlab.kitware.com/cmake/cmake/-/issues/26619 - %global cmake_config_args %{cmake_config_args} -DLLVM_RAM_PER_COMPILE_JOB=2048 + # The value 4096 was used after we've seen cases of memory exhaustion on a + # system with 64GiB RAM and 16 jobs. It worked a few times after applied, + # but we can't guarantee it's enough. It's important to remember that RHEL8 + # uses GCC. This value should not be applied to a build using clang. + %global cmake_config_args %{cmake_config_args} -DLLVM_RAM_PER_COMPILE_JOB=4096 %endif %endif #endregion misc options @@ -1602,6 +1859,14 @@ fi %global cmake_config_args_instrumented %{cmake_config_args_instrumented} \\\ -DLLVM_VP_COUNTERS_PER_SITE=8 +%if %{defined host_clang_maj_ver} +%global cmake_config_args_instrumented %{cmake_config_args_instrumented} \\\ + -DLLVM_PROFDATA=%{_bindir}/llvm-profdata-%{host_clang_maj_ver} +%else +%global cmake_config_args_instrumented %{cmake_config_args_instrumented} \\\ + -DLLVM_PROFDATA=%{_bindir}/llvm-profdata +%endif + # TODO(kkleine): Should we see warnings like: # "function control flow change detected (hash mismatch)" # then read https://issues.chromium.org/issues/40633598 again. @@ -1611,26 +1876,15 @@ fi %cmake_build --target libclang-cpp.so %cmake_build --target clang %cmake_build --target lld -%cmake_build --target llvm-profdata %cmake_build --target llvm-ar %cmake_build --target llvm-ranlib -%cmake_build --target llvm-cxxfilt #endregion Instrument LLVM #region Perf training -# Without these exports the function count is ~160 and with them it is ~200,000. -export LD_LIBRARY_PATH="%{builddir_instrumented}/%{_lib}:%{builddir_instrumented}/lib:$OLD_LD_LIBRARY_PATH" -export PATH="%{builddir_instrumented}/bin:$OLD_PATH" - %cmake_build --target generate-profdata -# Use the newly compiled llvm-profdata to avoid profile version mismatches like: -# "raw profile version mismatch: Profile uses raw profile format version = 10; expected version = 9" -%global llvm_profdata_bin %{builddir_instrumented}/bin/llvm-profdata -%global llvm_cxxfilt_bin %{builddir_instrumented}/bin/llvm-cxxfilt - # Show top 10 functions in the profile -%llvm_profdata_bin show --topn=10 %{builddir_instrumented}/tools/clang/utils/perf-training/clang.profdata | %llvm_cxxfilt_bin +llvm-profdata show --topn=10 %{builddir_instrumented}/tools/clang/utils/perf-training/clang.profdata | llvm-cxxfilt cp %{builddir_instrumented}/tools/clang/utils/perf-training/clang.profdata $RPM_BUILD_DIR/result.profdata @@ -1671,11 +1925,15 @@ cd $OLD_CWD # LLVM_VP_COUNTERS_PER_SITE instead of adding it, hence the # -DLLVM_VP_COUNTERS_PER_SITE=8. %global extra_cmake_opts %{extra_cmake_opts} -DLLVM_VP_COUNTERS_PER_SITE=8 +%endif + %if 0%{with lto_build} %global extra_cmake_opts %{extra_cmake_opts} -DLLVM_ENABLE_LTO:BOOL=Thin %global extra_cmake_opts %{extra_cmake_opts} -DLLVM_ENABLE_FATLTO=ON %endif - %global extra_cmake_opts %{extra_cmake_opts} -DLLVM_USE_LINKER=lld + +%if 0%{with use_lld} +%global extra_cmake_opts %{extra_cmake_opts} -DLLVM_USE_LINKER=lld %endif %cmake -G Ninja %{cmake_config_args} %{extra_cmake_opts} $extra_cmake_args @@ -1777,6 +2035,13 @@ deactivate cd .. %if %{with bundle_compat_lib} + +%if %{compat_maj_ver} >= 22 +%global compat_lib_cmake_args -DLLVM_ENABLE_EH=OFF +%else +%global compat_lib_cmake_args -DLLVM_ENABLE_EH=ON +%endif + # MIPS and Arm targets were disabled in LLVM 20, but we still need them # enabled for the compat libraries. %cmake -S ../llvm-project-%{compat_ver}.src/llvm -B ../llvm-compat-libs -G Ninja \ @@ -1786,10 +2051,9 @@ cd .. -DLLVM_INCLUDE_BENCHMARKS=OFF \ -DLLVM_INCLUDE_TESTS=OFF \ %{cmake_common_args} \ -%if %{compat_maj_ver} <= 19 - -DLLVM_TARGETS_TO_BUILD="$(echo %{targets_to_build});Mips;ARM" \ -%endif - %{nil} + %{compat_lib_cmake_args} + + %ninja_build -C ../llvm-compat-libs LLVM %ninja_build -C ../llvm-compat-libs libclang.so @@ -1808,7 +2072,11 @@ pushd llvm %if %{with python_lit} pushd utils/lit +%if 0%{?rhel} == 8 %py3_install +%else +%pyproject_install +%endif # Strip out #!/usr/bin/env python sed -i -e '1{\@^#!/usr/bin/env python@d}' %{buildroot}%{python3_sitelib}/lit/*.py @@ -1817,6 +2085,14 @@ popd %cmake_install +%if %{with flang} +# Create ld.so.conf.d entry +mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d +cat >> %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{pkg_name_flang}-%{_arch}.conf << EOF +%{_prefix}/lib/clang/%{maj_ver}/lib/%{llvm_triple}/ +EOF +%endif + popd mkdir -p %{buildroot}/%{_bindir} @@ -1996,7 +2272,8 @@ echo " %{cfg_file_content}" >> %{buildroot}%{_sysconfdir}/%{pkg_name_clang}/i386 %ifarch ppc64le # Fix install path on ppc64le so that the directory name matches the triple used # by clang. -mv %{buildroot}%{_prefix}/lib/clang/%{maj_ver}/lib/powerpc64le-redhat-linux-gnu %{buildroot}%{_prefix}/lib/clang/%{maj_ver}/lib/%{llvm_triple} +mkdir -pv %{buildroot}%{_prefix}/lib/clang/%{maj_ver}/lib/%{llvm_triple} +mv %{buildroot}%{_prefix}/lib/clang/%{maj_ver}/lib/powerpc64le-redhat-linux-gnu/* %{buildroot}%{_prefix}/lib/clang/%{maj_ver}/lib/%{llvm_triple} %endif %ifarch %{ix86} @@ -2071,6 +2348,62 @@ rm -rf %{buildroot}%{install_prefix}/src/python %endif #endregion mlir installation +#region flang installation +%if %{with flang} +# Remove unnecessary files. +rm -rfv %{buildroot}%{install_libdir}/cmake/flang + +# Remove runtime development headers (see https://github.com/llvm/llvm-project/pull/165610) +rm -rfv %{buildroot}%{install_includedir}/flang-rt + +rm -v %{buildroot}%{install_libdir}/libFIRAnalysis.a \ + %{buildroot}%{install_libdir}/libFIRBuilder.a \ + %{buildroot}%{install_libdir}/libFIRCodeGen.a \ + %{buildroot}%{install_libdir}/libFIRCodeGenDialect.a \ + %{buildroot}%{install_libdir}/libFIRDialect.a \ + %{buildroot}%{install_libdir}/libFIRDialectSupport.a \ + %{buildroot}%{install_libdir}/libFIROpenACCSupport.a \ + %{buildroot}%{install_libdir}/libFIROpenMPSupport.a \ + %{buildroot}%{install_libdir}/libFIRSupport.a \ + %{buildroot}%{install_libdir}/libFIRTestAnalysis.a \ + %{buildroot}%{install_libdir}/libFIRTestOpenACCInterfaces.a \ + %{buildroot}%{install_libdir}/libFIRTransforms.a \ + %{buildroot}%{install_libdir}/libflangFrontend.a \ + %{buildroot}%{install_libdir}/libflangFrontendTool.a \ + %{buildroot}%{install_libdir}/libflangPasses.a \ + %{buildroot}%{install_libdir}/libFlangOpenMPTransforms.a \ + %{buildroot}%{install_libdir}/libFortranEvaluate.a \ + %{buildroot}%{install_libdir}/libFortranLower.a \ + %{buildroot}%{install_libdir}/libFortranParser.a \ + %{buildroot}%{install_libdir}/libFortranSemantics.a \ + %{buildroot}%{install_libdir}/libFortranSupport.a \ + %{buildroot}%{install_libdir}/libHLFIRDialect.a \ + %{buildroot}%{install_libdir}/libHLFIRTransforms.a \ + %{buildroot}%{install_libdir}/libCUFAttrs.a \ + %{buildroot}%{install_libdir}/libCUFDialect.a \ + %{buildroot}%{install_libdir}/libFortranDecimal.a +%if %{maj_ver} >= 22 +rm -v %{buildroot}%{install_libdir}/libFortranUtils.a \ + %{buildroot}%{install_libdir}/libFIROpenACCAnalysis.a \ + %{buildroot}%{install_libdir}/libFIROpenACCTransforms.a \ + %{buildroot}%{install_libdir}/libMIFDialect.a +%endif + +find %{buildroot}%{install_includedir}/flang -type f -a ! -iname '*.mod' -delete + +# this is a test binary +rm -v %{buildroot}%{install_bindir}/f18-parse-demo + +# Probably this directory already existed before +mkdir -pv %{buildroot}%{_sysconfdir}/%{pkg_name_clang}/ +echo " %{cfg_file_content_flang}" >> %{buildroot}%{_sysconfdir}/%{pkg_name_clang}/%{_target_platform}-flang.cfg +%ifarch x86_64 +# On x86_64, install an additional config file. +echo " %{cfg_file_content_flang}" >> %{buildroot}%{_sysconfdir}/%{pkg_name_clang}/i386-redhat-linux-gnu-flang.cfg +%endif +%endif +#endregion flang installation + #region libcxx installation %if %{with libcxx} # We can't install the unversionned path on default location because that would conflict with @@ -2125,14 +2458,14 @@ move_and_replace_with_symlinks %{buildroot}%{install_datadir} %{buildroot}%{_dat mkdir -p %{buildroot}%{_bindir} for f in %{buildroot}%{install_bindir}/*; do filename=`basename $f` - if [[ "$filename" =~ ^(lit|ld|clang-%{maj_ver})$ ]]; then + if [[ "$filename" =~ ^(lit|ld|clang-%{maj_ver}|flang-%{maj_ver})$ ]]; then continue fi %if %{with compat_build} ln -s ../../%{install_bindir}/$filename %{buildroot}/%{_bindir}/$filename-%{maj_ver} %else - # clang-NN is already created by the build system. - if [[ "$filename" == "clang" ]]; then + # clang-NN and flang-NN are already created by the build system. + if [[ "$filename" =~ ^(clang|flang)$ ]]; then continue fi ln -s $filename %{buildroot}/%{_bindir}/$filename-%{maj_ver} @@ -2179,6 +2512,22 @@ install -m 0755 ../llvm-compat-libs/lib/liblldb.so.%{compat_maj_ver}* %{buildroo # TODO(kkleine): Instead of deleting test files we should mark them as expected # to fail. See https://llvm.org/docs/CommandGuide/lit.html#cmdoption-lit-xfail +# Tell if the GTS version used by the newly built clang is equal to the +# expected version. +function is_gts_equal { + local gts_used=$(`pwd`/%{_vpath_builddir}/bin/clang -v 2>&1 | grep "Selected GCC installation" | sed 's|.*/\([0-9]\+\)$|\1|') + if [[ -z "%{gts_version}" ]]; then + return 0 + fi + test "x$gts_used" = "x%{gts_version}" + return $? +} + +# Increase open file limit while running tests. +if [[ $(ulimit -n) -lt 10000 ]]; then + ulimit -n 10000 +fi + %ifarch ppc64le # TODO: Re-enable when ld.gold fixed its internal error. rm llvm/test/tools/gold/PowerPC/mtriple.ll @@ -2198,6 +2547,10 @@ function reset_test_opts() { # See https://llvm.org/docs/CommandGuide/lit.html#general-options export LIT_OPTS="-vv --time-tests" + # --timeout needs psutil package, so disable it on RHEL 8. + %if %{undefined rhel} || 0%{?rhel} > 8 + export LIT_OPTS="$LIT_OPTS --timeout=600" + %endif # Set to mark tests as expected to fail. # See https://llvm.org/docs/CommandGuide/lit.html#cmdoption-lit-xfail @@ -2282,6 +2635,7 @@ export LIT_XFAIL="tools/UpdateTestChecks" #region Test CLANG reset_test_opts export LIT_XFAIL="$LIT_XFAIL;clang/test/CodeGen/profile-filter.c" + %ifarch riscv64 export LIT_XFAIL="$LIT_XFAIL;clang/test/OpenMP/declare_variant_device_isa_codegen_1.c" export LIT_XFAIL="$LIT_XFAIL;OpenMP/declare_variant_device_isa_codegen_1.c" @@ -2357,32 +2711,11 @@ test_list_filter_out+=("libomp :: worksharing/for/omp_collapse_many_GTGEGT_int.c test_list_filter_out+=("libomp :: worksharing/for/omp_collapse_many_LTLEGE_int.c") test_list_filter_out+=("libomp :: worksharing/for/omp_collapse_one_int.c") -%if %{maj_ver} < 21 -# The following test is flaky and we'll filter it out -test_list_filter_out+=("libomp :: parallel/bug63197.c") -test_list_filter_out+=("libomp :: tasking/issue-69733.c") -test_list_filter_out+=("libarcher :: races/task-taskgroup-unrelated.c") - -# The following tests have been failing intermittently. -# Issue upstream: https://github.com/llvm/llvm-project/issues/127796 -test_list_filter_out+=("libarcher :: races/task-two.c") -test_list_filter_out+=("libarcher :: races/lock-nested-unrelated.c") -%endif - %ifarch s390x test_list_filter_out+=("libomp :: flush/omp_flush.c") test_list_filter_out+=("libomp :: worksharing/for/omp_for_schedule_guided.c") %endif -%if %{maj_ver} < 21 -%ifarch aarch64 s390x -# The following test has been failing intermittently on aarch64 and s390x. -# Re-enable it after https://github.com/llvm/llvm-project/issues/117773 -# gets fixed. -test_list_filter_out+=("libarcher :: races/taskwait-depend.c") -%endif -%endif - # The following tests seem pass on ppc64le and x86_64 and aarch64 only: %ifnarch ppc64le x86_64 s390x aarch64 # Passes on ppc64le: @@ -2484,7 +2817,6 @@ export LIT_XFAIL="$LIT_XFAIL;offloading/thread_state_2.c" adjust_lit_filter_out test_list_filter_out -%if %{maj_ver} >= 21 # This allows openmp tests to be re-run 4 times. Once they pass # after being re-run, they are marked as FLAKYPASS. # See https://github.com/llvm/llvm-project/pull/141851 for the @@ -2495,12 +2827,27 @@ adjust_lit_filter_out test_list_filter_out # we can see the exact number of attempts the tests needed # to pass. And then we can adapt this number. export LIT_OPTS="$LIT_OPTS --max-retries-per-test=4" + +%if %{with flang} +# Without this we run into a libflang_rt.runtime.so not found error. +# See https://github.com/llvm/llvm-project/pull/150722 for why this only +# happens when flang is found. +export LD_LIBRARY_PATH=%{buildroot}%{_prefix}/lib/clang/%{maj_ver}/lib/%{llvm_triple} %endif %if 0%{?rhel} # libomp tests are often very slow on s390x brew builders %ifnarch s390x riscv64 -%cmake_build --target check-openmp +# Rarely, the system clang uses a GCC installation directory that is +# different from what we'd like to build with. +# Our newly built clang ends up using that old GCC because of the config +# files under /etc/clang pointing to the old GCC. We won't be able to run all +# tests because the installed libatomic cannot be found due to our newly built +# clang using the wrong GCC directory, e.g. we installed the libatomic from +# the latest GTS, but the installed GCC is 1 version earlier. +if is_gts_equal; then + %cmake_build --target check-openmp +fi %endif %else %cmake_build --target check-openmp @@ -2563,6 +2910,12 @@ test_list_filter_out+=("MLIR :: python/execution_engine.py") test_list_filter_out+=("MLIR :: python/multithreaded_tests.py") %endif +%if %{with flang} +# TODO(kkleine): This test needs to be re-enabled. I currently only fails when building with flang. +# Here's the test failure: https://gist.github.com/kwk/5d551e27a28dfc1b34a09dca781f91df +test_list_filter_out+=("MLIR :: mlir-pdll-lsp-server/view-output.test") +%endif + adjust_lit_filter_out test_list_filter_out export PYTHONPATH=%{buildroot}/%{python3_sitearch} @@ -2598,6 +2951,8 @@ if ! grep -q atomics /proc/cpuinfo; then fi %endif +adjust_lit_filter_out test_list_filter_out + %cmake_build --target check-bolt %endif #endregion BOLT tests @@ -2609,6 +2964,25 @@ reset_test_opts %endif #endregion polly tests +#region flang tests +%if %{with flang} +reset_test_opts + +# https://github.com/llvm/llvm-project/issues/126051 +test_list_filter_out+=("Flang :: Driver/linker-flags.f90") + +# We filter our the location.f90 test for now because with LTO+PGO enabled, +# We miss the location.f90 entry in the loc_kind_array[ base, inclusion] entry. +# https://github.com/llvm/llvm-project/issues/156629 +test_list_filter_out+=("Flang :: Lower/location.f90") + +adjust_lit_filter_out test_list_filter_out + +%cmake_build --target check-flang +%cmake_build --target check-flang-rt + +%endif +#endregion flang tests %endif @@ -2787,6 +3161,7 @@ fi llvm-mc llvm-mca llvm-ml + llvm-ml64 llvm-modextract llvm-mt llvm-nm @@ -2829,15 +3204,11 @@ fi yaml2obj }} -%if %{maj_ver} >= 21 -%{expand_bins %{expand: - llvm-ml64 -}} -%endif - %if %{maj_ver} >= 22 %{expand_bins %{expand: llvm-ir2vec + llvm-offload-wrapper + llvm-offload-binary }} %endif @@ -2902,6 +3273,7 @@ fi %if %{maj_ver} >= 22 %{expand_mans %{expand: llvm-ir2vec + llvm-offload-binary }} %endif @@ -2972,15 +3344,16 @@ fi lli-child-target llvm-isel-fuzzer llvm-opt-fuzzer -}} -%if %{maj_ver} >= 21 -%{expand_bins %{expand: llvm-test-mustache-spec }} +%if %{maj_ver} >= 22 +%{expand_bins %{expand: + llvm-cas +}} +%endif %{expand_mans %{expand: llvm-test-mustache-spec }} -%endif %files -n %{pkg_name_llvm}-googletest %license llvm/LICENSE.TXT @@ -3129,12 +3502,8 @@ fi modularize clang-format-diff run-clang-tidy -}} -%if %{maj_ver} >= 21 -%{expand_bins %{expand: offload-arch }} -%endif %if %{without compat_build} %{_emacs_sitestartdir}/clang-format.el @@ -3182,11 +3551,8 @@ fi # Files that appear on all targets %{_prefix}/lib/clang/%{maj_ver}/lib/%{compiler_rt_triple}/libclang_rt.* - -%if %{has_crtobjs} %{_prefix}/lib/clang/%{maj_ver}/lib/%{compiler_rt_triple}/clang_rt.crtbegin.o %{_prefix}/lib/clang/%{maj_ver}/lib/%{compiler_rt_triple}/clang_rt.crtend.o -%endif %ifnarch %{ix86} s390x riscv64 %{_prefix}/lib/clang/%{maj_ver}/lib/%{compiler_rt_triple}/liborc_rt.a @@ -3227,20 +3593,12 @@ fi libLLVMOffload.so }} -%if %{maj_ver} < 21 -%{expand_libs %{expand: - libomptarget.devicertl.a - libomptarget-amdgpu*.bc - libomptarget-nvptx*.bc -}} -%else %{expand_libs %{expand: amdgcn-amd-amdhsa/libompdevice.a amdgcn-amd-amdhsa/libomptarget-amdgpu.bc nvptx64-nvidia-cuda/libompdevice.a nvptx64-nvidia-cuda/libomptarget-nvptx.bc }} -%endif %expand_includes offload %endif @@ -3304,6 +3662,11 @@ fi lldb-instr lldb-server }} +%if %{maj_ver} >= 22 +%{expand_bins %{expand: + lldb-mcp +}} +%endif # Usually, *.so symlinks are kept in devel subpackages. However, the python # bindings depend on this symlink at runtime. %{expand_libs %{expand: @@ -3318,6 +3681,12 @@ fi %files -n %{pkg_name_lldb}-devel %expand_includes lldb +%if %{maj_ver} >= 22 +%{expand_bins %{expand: + lldb-tblgen + yaml2macho-core +}} +%endif %if %{without compat_build} %files -n python%{python3_pkgversion}-lldb @@ -3341,6 +3710,12 @@ fi libMLIR*.so.%{maj_ver}* }} +%if %{maj_ver} >= 22 +%{expand_libs %{expand: + libmlir_apfloat_wrappers.so.%{maj_ver}* +}} +%endif + %files -n %{pkg_name_mlir}-static %expand_libs libMLIR*.a @@ -3372,12 +3747,68 @@ fi libMLIR*.so }} +%if %{maj_ver} >= 22 +%{expand_libs %{expand: + libmlir_apfloat_wrappers.so +}} +%endif + %files -n python%{python3_pkgversion}-%{pkg_name_mlir} %{python3_sitearch}/mlir/ %endif #endregion MLIR files #region libcxx files + +#region flang files +%if %{with flang} +%files -n %{pkg_name_flang} +%license flang/LICENSE.TXT +%{expand_mans flang} +%{expand_bins %{expand: + tco + bbc + fir-opt + fir-lsp-server + flang + flang-new +}} +%{install_bindir}/flang-%{maj_ver} +%{expand_includes %{expand: + flang/__cuda_builtins.mod + flang/__cuda_device.mod + flang/__fortran_builtins.mod + flang/__fortran_ieee_exceptions.mod + flang/__fortran_type_info.mod + flang/__ppc_intrinsics.mod + flang/__ppc_types.mod + flang/cooperative_groups.mod + flang/ieee_arithmetic.mod + flang/ieee_exceptions.mod + flang/ieee_features.mod + flang/iso_c_binding.mod + flang/iso_fortran_env.mod + flang/mma.mod + flang/cudadevice.mod + flang/iso_fortran_env_impl.mod + flang/omp_lib.mod + flang/omp_lib_kinds.mod +}} +%{_sysconfdir}/%{pkg_name_clang}/%{_target_platform}-flang.cfg +%ifarch x86_64 +%{_sysconfdir}/%{pkg_name_clang}/i386-redhat-linux-gnu-flang.cfg +%endif + +%{_prefix}/lib/clang/%{maj_ver}/include/ISO_Fortran_binding.h + +%files -n %{pkg_name_flang}-runtime +%{_prefix}/lib/clang/%{maj_ver}/lib/%{llvm_triple}/libflang_rt.runtime.a +%{_prefix}/lib/clang/%{maj_ver}/lib/%{llvm_triple}/libflang_rt.runtime.so +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{pkg_name_flang}-%{_arch}.conf + +%endif +#region flang files + %if %{with libcxx} %files -n %{pkg_name_libcxx} @@ -3473,871 +3904,10 @@ fi #endregion files -#region changelog %changelog -* Wed Aug 13 2025 Eduard Abdullin - 20.1.8-1.alma.1 +* Tue Jan 06 2026 Eduard Abdullin - 21.1.6-1.alma.1 - Use x86_64-redhat-linux as default gcc triple for x86_64_v2 - Add riscv64 support -* Wed Jul 30 2025 Tom Stellard - 20.1.8-1 -- LLVM 20.1.8 relase - -* Mon Jul 28 2025 Tom Stellard - 20.1.4-2 -- Remove bundled llvm19 compat package - -* Mon May 12 2025 Konrad Kleine - 20.1.4-1 -- Update to LLVM 20.1.4 -- Drop ARM and MIPS targets (RHEL-86089) - -* Mon Apr 14 2025 Konrad Kleine - 20.1.2-1 -- Update to LLVM 20.1.2 (RHEL-80988) - -* Fri Jan 17 2025 Nikita Popov - 19.1.7-2 -- Support CET in libomp.so (RHEL-74346) - -* Wed Jan 15 2025 Nikita Popov - 19.1.7-1 -- Update to LLVM 19.1.7 (RHEL-57456) -- Remove llvm18 compat package (RHEL-57457) -- Remove generated html content from llvm-doc subpackage (RHEL-58900) -- Enable LLVM_ENABLE_ZSTD=ON (RHEL-70325) - -* Mon Oct 14 2024 Nikita Popov - 19.1.1-5 -- Add missing requires - -* Fri Oct 11 2024 Nikita Popov - 19.1.1-4 -- Update openmp patch - -* Thu Oct 10 2024 Nikita Popov - 19.1.1-3 -- Backport ppc openmp patch - -* Wed Oct 09 2024 Nikita Popov - 19.1.1-2 -- Fix build on some brew builders - -* Wed Oct 02 2024 Nikita Popov - 19.1.1-1 -- Update to LLVM 19.1.1 - -* Mon Jul 22 2024 Tulio Magno Quites Machado Filho - 18.1.8-1 -- Update to LLVM 18.1.2 (RHEL-28056) -- Remove llvm17 compat package (RHEL-30890) -- Workaround for GFX11.5 export priority (RHEL-49746) - -* Mon Jul 01 2024 Tulio Magno Quites Machado Filho - 18.1.2-5 -- Add subpackage llvm-toolset (RHEL-45729) - -* Mon Jun 24 2024 Troy Dawson - 18.1.2-4 -- Bump release for June 2024 mass rebuild - -* Fri Jun 07 2024 Zhengyu He - 18.1.2-3 -- Add support for riscv64 - -* Mon Apr 08 2024 Tulio Magno Quites Machado Filho - 18.1.2-2 -- Rebuild LLVM 18.1.2 (RHEL-27724) - -* Wed Mar 27 2024 Tulio Magno Quites Machado Filho - 18.1.2-1 -- Update to LLVM 18.1.2 (RHEL-27724) - -* Thu Feb 01 2024 Nikita Popov - 17.0.6-6 -- Fix crash with -fzero-call-used-regs (rhbz#2262260) - -* Mon Jan 29 2024 Nikita Popov - 17.0.6-5 -- Only use cet-report=error on x86_64 - -* Thu Jan 25 2024 Fedora Release Engineering - 17.0.6-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 17.0.6-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Nov 30 2023 Tulio Magno Quites Machado Filho - 17.0.6-2 -- Fix rhbz #2248872 - -* Tue Nov 28 2023 Tulio Magno Quites Machado Filho - 17.0.6-1 -- Update to LLVM 17.0.6 - -* Tue Nov 14 2023 Tulio Magno Quites Machado Filho - 17.0.5-1 -- Update to LLVM 17.0.5 - -* Tue Oct 31 2023 Tulio Magno Quites Machado Filho - 17.0.4-1 -- Update to LLVM 17.0.4 - -* Tue Oct 17 2023 Tulio Magno Quites Machado Filho - 17.0.3-1 -- Update to LLVM 17.0.3 - -* Tue Oct 03 2023 Tulio Magno Quites Machado Filho - 17.0.2-1 -- Update to LLVM 17.0.2 - -* Fri Sep 22 2023 Tulio Magno Quites Machado Filho - 17.0.1~rc4-1 -- Update to LLVM 17.0.1 - -* Tue Sep 05 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc4-1 -- Update to LLVM 17.0.0 RC4 - -* Thu Aug 24 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc3-1 -- Update to LLVM 17.0.0 RC3 - -* Thu Aug 24 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc2-2 -- Temporarily disable a failing test on ppc64le - -* Thu Aug 17 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc2-1 -- Update to LLVM 17.0.0 RC2 - -* Wed Aug 16 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc1-4 -- Disable LTO on i686 - -* Mon Aug 14 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc1-3 -- Re-add patch removed by mistake - -* Tue Aug 01 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc1-2 -- Enable LLVM_UNREACHABLE_OPTIMIZE temporarily - -* Mon Jul 31 2023 Tulio Magno Quites Machado Filho - 17.0.0~rc1-1 -- Update to LLVM 17.0.0 RC1 - -* Mon Jul 31 2023 Tulio Magno Quites Machado Filho - 16.0.6-6 -- Fix rhbz #2224885 - -* Thu Jul 20 2023 Fedora Release Engineering - 16.0.6-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Mon Jul 10 2023 Tulio Magno Quites Machado Filho - 16.0.6-4 -- Use LLVM_UNITTEST_LINK_FLAGS to reduce link times for unit tests - -* Mon Jul 03 2023 Tulio Magno Quites Machado Filho - 16.0.6-3 -- Improve error messages for unsupported relocs on s390x (rhbz#2216906) -- Disable LLVM_UNREACHABLE_OPTIMIZE - -* Wed Jun 14 2023 Tulio Magno Quites Machado Filho - 16.0.6-1 -- Update to LLVM 16.0.6 - -* Fri Jun 09 2023 Nikita Popov - 16.0.5-2 -- Split off llvm-cmake-utils package - -* Mon Jun 05 2023 Tulio Magno Quites Machado Filho - 16.0.5-1 -- Update to LLVM 16.0.5 - -* Fri May 19 2023 Yaakov Selkowitz - 16.0.4-2 -- Avoid recommonmark dependency in RHEL builds - -* Thu May 18 2023 Tulio Magno Quites Machado Filho - 16.0.4-1 -- Update to LLVM 16.0.4 - -* Tue May 09 2023 Tulio Magno Quites Machado Filho - 16.0.3-1 -- Update to LLVM 16.0.3 - -* Tue Apr 25 2023 Tulio Magno Quites Machado Filho - 16.0.2-1 -- Update to LLVM 16.0.2 - -* Tue Apr 11 2023 Tulio Magno Quites Machado Filho - 16.0.1-1 -- Update to LLVM 16.0.1 - -* Thu Mar 23 2023 Tulio Magno Quites Machado Filho - 16.0.0-2 -- Distribute libllvm_gtest.a and libllvm_gtest_main.a with llvm-googletest -- Stop distributing /usr/share/llvm/src/utils - -* Mon Mar 20 2023 Tulio Magno Quites Machado Filho - 16.0.0-1 -- Update to LLVM 16.0.0 - -* Thu Mar 16 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc4-2 -- Fix the ppc64le triple - -* Tue Mar 14 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc4-1 -- Update to LLVM 16.0.0 RC4 - -* Fri Mar 10 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc3-2 -- Fix llvm-exegesis failures on s390x - -* Wed Feb 22 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc3-1 -- Update to LLVM 16.0.0 RC3 - -* Wed Feb 01 2023 Tulio Magno Quites Machado Filho - 16.0.0~rc1-1 -- Update to LLVM 16.0.0 RC1 - -* Thu Jan 19 2023 Tulio Magno Quites Machado Filho - 15.0.7-3 -- Update license to SPDX identifiers. -- Include the Apache license adopted in 2019. - -* Thu Jan 19 2023 Fedora Release Engineering - 15.0.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Jan 12 2023 Nikita Popov - 15.0.7-1 -- Update to LLVM 15.0.7 - -* Mon Jan 09 2023 Tom Stellard - 15.0.6-3 -- Omit frame pointers when building - -* Mon Dec 19 2022 Nikita Popov - 15.0.6-2 -- Remove workaround for rbhz#2048440 - -* Mon Dec 05 2022 Nikita Popov - 15.0.6-1 -- Update to LLVM 15.0.6 - -* Fri Nov 11 2022 Nikita Popov - 15.0.4-2 -- Copy CFLAGS to ASMFLAGs to enable CET in asm files - -* Wed Nov 02 2022 Nikita Popov - 15.0.4-1 -- Update to LLVM 15.0.4 - -* Tue Sep 27 2022 Nikita Popov - 15.0.0-2 -- Export GetHostTriple.cmake - -* Tue Sep 06 2022 Nikita Popov - 15.0.0-1 -- Update to LLVM 15.0.0 - -* Thu Jul 21 2022 Fedora Release Engineering - 14.0.5-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Fri Jun 17 2022 Timm Bäder - 14.0.5-2 -- Release bump for new redhat-rpm-config - -* Mon Jun 13 2022 Timm Bäder - 14.0.5-1 -- 14.0.5 Release - -* Wed May 18 2022 Tom Stellard - 14.0.3-1 -- 14.0.3 Release - -* Fri Apr 29 2022 Timm Bäder - 14.0.0-2 -- Remove llvm-cmake-devel package - -* Wed Mar 23 2022 Timm Bäder - 14.0.0-1 -- Update to LLVM 14.0.0 - -* Wed Feb 02 2022 Nikita Popov - 13.0.1-1 -- Update to LLVM 13.0.1 final - -* Tue Jan 25 2022 Nikita Popov - 13.0.1~rc3-1 -- Update to LLVM 13.0.1rc3 - -* Thu Jan 20 2022 Fedora Release Engineering - 13.0.1~rc2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Thu Jan 13 2022 Nikita Popov - 13.0.1~rc2-1 -- Update to LLVM 13.0.1rc2 - -* Mon Jan 10 2022 Nikita Popov - 13.0.1~rc1-1 -- Upstream 13.0.1 rc1 release - -* Sat Jan 08 2022 Miro Hrončok - 13.0.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Changes/LIBFFI34 - -* Thu Nov 11 2021 Tom Stellard - 13.0.0-7 -- Enable lto on s390x and arm - -* Mon Oct 25 2021 Tom Stellard - 13.0.0-6 -- Build with Thin LTO - -* Mon Oct 18 2021 Tom Stellard - 13.0.0-5 -- Build with clang - -* Fri Oct 08 2021 Tom Stellard - 13.0.0-4 -- Fix default triple on arm - -* Wed Oct 06 2021 Tom Stellard - 13.0.0-3 -- Set default triple - -* Mon Oct 04 2021 Tom Stellard - 13.0.0-2 -- Drop abi_revision from soname - -* Thu Sep 30 2021 Tom Stellard - 13.0.0-1 -- 13.0.0 Release - -* Thu Sep 30 2021 Tom Stellard - 13.0.0~rc4-2 -- Restore config.guess for host triple detection - -* Fri Sep 24 2021 Tom Stellard - 13.0.0~rc4-1 -- 13.0.0-rc4 Release - -* Fri Sep 17 2021 Tom Stellard - 13.0.0~rc3-1 -- 13.0.0-rc3 Release - -* Mon Sep 13 2021 Tom Stellard - 13.0.0~rc1-3 -- Pass LLVM_DEFAULT_TARGET_TRIPLE to cmake - -* Mon Sep 13 2021 Konrad Kleine - 13.0.0~rc1-2 -- Add --without=check option - -* Wed Aug 04 2021 Tom Stellard - 13.0.0~rc1-1 -- 13.0.0-rc1 Release - -* Thu Jul 22 2021 sguelton@redhat.com - 12.0.1-3 -- Maintain versionned link to llvm-config - -* Thu Jul 22 2021 Fedora Release Engineering - 12.0.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Mon Jul 12 2021 Tom Stellard - 12.0.1-1 -- 12.0.1 Release - -* Wed Jun 30 2021 Tom Stellard - llvm-12.0.1~rc3-1 -- 12.0.1-rc3 Release - -* Fri May 28 2021 Tom Stellard - 12.0.1~rc1-2 -- Stop installing lit tests - -* Wed May 26 2021 Tom Stellard - llvm-12.0.1~rc1-1 -- 12.0.1-rc1 Release - -* Mon May 17 2021 sguelton@redhat.com - 12.0.0-7 -- Fix handling of llvm-config - -* Mon May 03 2021 kkleine@redhat.com - 12.0.0-6 -- More verbose builds thanks to python3-psutil - -* Sat May 01 2021 sguelton@redhat.com - 12.0.0-5 -- Fix llvm-config install - -* Tue Apr 27 2021 sguelton@redhat.com - 12.0.0-4 -- Provide default empty value for exec_suffix when not in compat mode - -* Tue Apr 27 2021 sguelton@redhat.com - 12.0.0-3 -- Fix llvm-config install - -* Tue Apr 20 2021 sguelton@redhat.com - 12.0.0-2 -- Backport compat package fix - -* Thu Apr 15 2021 Tom Stellard - 12.0.0-1 -- 12.0.0 Release - -* Thu Apr 08 2021 sguelton@redhat.com - 12.0.0-0.11.rc5 -- New upstream release candidate - -* Tue Apr 06 2021 sguelton@redhat.com - 12.0.0-0.10.rc4 -- Patch test case for compatibility with llvm-test latout - -* Fri Apr 02 2021 sguelton@redhat.com - 12.0.0-0.9.rc4 -- New upstream release candidate - -* Wed Mar 31 2021 Jonathan Wakely - 12.0.0-0.8.rc3 -- Rebuilt for removed libstdc++ symbols (#1937698) - -* Thu Mar 11 2021 sguelton@redhat.com - 12.0.0-0.7.rc3 -- LLVM 12.0.0 rc3 - -* Wed Mar 10 2021 Kalev Lember - 12.0.0-0.6.rc2 -- Add llvm-static(major) provides to the -static subpackage - -* Tue Mar 09 2021 sguelton@redhat.com - 12.0.0-0.5.rc2 -- rebuilt - -* Tue Mar 02 2021 sguelton@redhat.com - 12.0.0-0.4.rc2 -- Change CI working dir - -* Wed Feb 24 2021 sguelton@redhat.com - 12.0.0-0.3.rc2 -- 12.0.0-rc2 release - -* Tue Feb 16 2021 Dave Airlie - 12.0.0-0.2.rc1 -- Enable LLVM_USE_PERF to allow perf integration - -* Tue Feb 2 2021 Serge Guelton - 12.0.0-0.1.rc1 -- 12.0.0-rc1 release - -* Tue Jan 26 2021 Fedora Release Engineering - 11.1.0-0.3.rc2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Fri Jan 22 2021 Serge Guelton - 11.1.0-0.2.rc2 -- 11.1.0-rc2 release - -* Thu Jan 14 2021 Serge Guelton - 11.1.0-0.1.rc1 -- 11.1.0-rc1 release - -* Tue Jan 05 2021 Serge Guelton - 11.0.1-3.rc2 -- Waive extra test case - -* Sun Dec 20 2020 sguelton@redhat.com - 11.0.1-2.rc2 -- 11.0.1-rc2 release - -* Tue Dec 01 2020 sguelton@redhat.com - 11.0.1-1.rc1 -- 11.0.1-rc1 release - -* Sat Oct 31 2020 Jeff Law - 11.0.0-2 -- Fix missing #include for gcc-11 - -* Wed Oct 14 2020 Josh Stone - 11.0.0-1 -- Fix coreos-installer test crash on s390x (rhbz#1883457) - -* Mon Oct 12 2020 sguelton@redhat.com - 11.0.0-0.11 -- llvm 11.0.0 - final release - -* Thu Oct 08 2020 sguelton@redhat.com - 11.0.0-0.10.rc6 -- 11.0.0-rc6 - -* Fri Oct 02 2020 sguelton@redhat.com - 11.0.0-0.9.rc5 -- 11.0.0-rc5 Release - -* Sun Sep 27 2020 sguelton@redhat.com - 11.0.0-0.8.rc3 -- Fix NVR - -* Thu Sep 24 2020 sguelton@redhat.com - 11.0.0-0.2.rc3 -- Obsolete patch for rhbz#1862012 - -* Thu Sep 24 2020 sguelton@redhat.com - 11.0.0-0.1.rc3 -- 11.0.0-rc3 Release - -* Wed Sep 02 2020 sguelton@redhat.com - 11.0.0-0.7.rc2 -- Apply upstream patch for rhbz#1862012 - -* Tue Sep 01 2020 sguelton@redhat.com - 11.0.0-0.6.rc2 -- Fix source location - -* Fri Aug 21 2020 Tom Stellard - 11.0.0-0.5.rc2 -- 11.0.0-rc2 Release - -* Wed Aug 19 2020 Tom Stellard - 11.0.0-0.4.rc1 -- Fix regression-tests CI tests - -* Tue Aug 18 2020 Tom Stellard - 11.0.0-0.3.rc1 -- Fix rust crash on ppc64le compiling firefox -- rhbz#1862012 - -* Tue Aug 11 2020 Tom Stellard - 11.0.0-0.2.rc1 -- Install update_cc_test_checks.py script - -* Thu Aug 06 2020 Tom Stellard - 11.0.0-0.1-rc1 -- LLVM 11.0.0-rc1 Release -- Make llvm-devel require llvm-static and llvm-test - -* Tue Aug 04 2020 Tom Stellard - 10.0.0-10 -- Backport upstream patch to fix build with -flto. -- Disable LTO on s390x to work-around unit test failures. - -* Sat Aug 01 2020 sguelton@redhat.com - 10.0.0-9 -- Fix update-alternative uninstall script - -* Sat Aug 01 2020 sguelton@redhat.com - 10.0.0-8 -- Fix gpg verification and update macro usage. - -* Sat Aug 01 2020 Fedora Release Engineering - 10.0.0-7 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Tue Jul 28 2020 Fedora Release Engineering - 10.0.0-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild -* Thu Jun 11 2020 sguelton@redhat.com - 10.0.0-5 -- Make llvm-test.tar.gz creation reproducible. - -* Tue Jun 02 2020 sguelton@redhat.com - 10.0.0-4 -- Instruct cmake not to generate RPATH - -* Thu Apr 30 2020 Tom Stellard - 10.0.0-3 -- Install LLVMgold.so symlink in bfd-plugins directory - -* Tue Apr 07 2020 sguelton@redhat.com - 10.0.0-2 -- Do not package UpdateTestChecks tests in llvm-tests -- Apply upstream patch bab5908df to pass gating tests - -* Wed Mar 25 2020 sguelton@redhat.com - 10.0.0-1 -- 10.0.0 final - -* Mon Mar 23 2020 sguelton@redhat.com - 10.0.0-0.6.rc6 -- 10.0.0 rc6 - -* Thu Mar 19 2020 sguelton@redhat.com - 10.0.0-0.5.rc5 -- 10.0.0 rc5 - -* Sat Mar 14 2020 sguelton@redhat.com - 10.0.0-0.4.rc4 -- 10.0.0 rc4 - -* Thu Mar 05 2020 sguelton@redhat.com - 10.0.0-0.3.rc3 -- 10.0.0 rc3 - -* Fri Feb 28 2020 sguelton@redhat.com - 10.0.0-0.2.rc2 -- Remove *_finite support, see rhbz#1803203 - -* Fri Feb 14 2020 sguelton@redhat.com - 10.0.0-0.1.rc2 -- 10.0.0 rc2 - -* Fri Jan 31 2020 sguelton@redhat.com - 10.0.0-0.1.rc1 -- 10.0.0 rc1 - -* Wed Jan 29 2020 Fedora Release Engineering - 9.0.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Tue Jan 21 2020 Tom Stellard - 9.0.1-4 -- Rebuild after previous build failed to strip binaries - -* Fri Jan 17 2020 Tom Stellard - 9.0.1-3 -- Add explicit Requires from sub-packages to llvm-libs - -* Fri Jan 10 2020 Tom Stellard - 9.0.1-2 -- Fix crash with kernel bpf self-tests - -* Thu Dec 19 2019 tstellar@redhat.com - 9.0.1-1 -- 9.0.1 Release - -* Mon Nov 25 2019 sguelton@redhat.com - 9.0.0-4 -- Activate AVR on all architectures - -* Mon Sep 30 2019 Tom Stellard - 9.0.0-3 -- Build libLLVM.so first to avoid OOM errors - -* Fri Sep 27 2019 Tom Stellard - 9.0.0-2 -- Remove unneeded BuildRequires: libstdc++-static - -* Thu Sep 19 2019 sguelton@redhat.com - 9.0.0-1 -- 9.0.0 Release - -* Wed Sep 18 2019 sguelton@redhat.com - 9.0.0-0.5.rc3 -- Support avr target, see rhbz#1718492 - -* Tue Sep 10 2019 Tom Stellard - 9.0.0-0.4.rc3 -- Split out test executables into their own export file - -* Fri Sep 06 2019 Tom Stellard - 9.0.0-0.3.rc3 -- Fix patch for splitting out static library exports - -* Fri Aug 30 2019 Tom Stellard - 9.0.0-0.2.rc3 -- 9.0.0-rc3 Release - -* Thu Aug 01 2019 Tom Stellard - 9.0.0-0.1.rc2 -- 9.0.0-rc2 Release - -* Tue Jul 30 2019 Tom Stellard - 8.0.0-9 -- Sync with llvm8.0 spec file - -* Thu Jul 25 2019 Fedora Release Engineering - 8.0.0-8.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Wed Jul 17 2019 Tom Stellard - 8.0.0-8 -- Add provides for the major version of sub-packages - -* Fri May 17 2019 sguelton@redhat.com - 8.0.0-7 -- Fix conflicts between llvm-static = 8 and llvm-dev < 8 around LLVMStaticExports.cmake - -* Wed Apr 24 2019 Tom Stellard - 8.0.0-6 -- Make sure we aren't passing -g on s390x - -* Sat Mar 30 2019 Tom Stellard - 8.0.0-5 -- Enable build rpath while keeping install rpath disabled - -* Wed Mar 27 2019 Tom Stellard - 8.0.0-4 -- Backport r351577 from trunk to fix ninja check failures - -* Tue Mar 26 2019 Tom Stellard - 8.0.0-3 -- Fix ninja check - -* Fri Mar 22 2019 Tom Stellard - 8.0.0-2 -- llvm-test fixes - -* Wed Mar 20 2019 sguelton@redhat.com - 8.0.0-1 -- 8.0.0 final - -* Fri Mar 15 2019 sguelton@redhat.com - 8.0.0-0.6.rc4 -- Activate all backends (rhbz#1689031) - -* Tue Mar 12 2019 sguelton@redhat.com - 8.0.0-0.5.rc4 -- 8.0.0 Release candidate 4 - -* Mon Mar 4 2019 sguelton@redhat.com - 8.0.0-0.4.rc3 -- Move some binaries to -test package, cleanup specfile - -* Mon Mar 4 2019 sguelton@redhat.com - 8.0.0-0.3.rc3 -- 8.0.0 Release candidate 3 - -* Fri Feb 22 2019 sguelton@redhat.com - 8.0.0-0.2.rc2 -- 8.0.0 Release candidate 2 - -* Sat Feb 9 2019 sguelton@redhat.com - 8.0.0-0.1.rc1 -- 8.0.0 Release candidate 1 - -* Fri Feb 01 2019 Fedora Release Engineering - 7.0.1-2.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Mon Jan 21 2019 Josh Stone - 7.0.1-2 -- Fix discriminators in metadata, rhbz#1668033 - -* Mon Dec 17 2018 sguelton@redhat.com - 7.0.1-1 -- 7.0.1 release - -* Tue Dec 04 2018 sguelton@redhat.com - 7.0.0-5 -- Ensure rpmlint passes on specfile - -* Sat Nov 17 2018 Tom Stellard - 7.0.0-4 -- Install testing libraries for unittests - -* Sat Oct 27 2018 Tom Stellard - 7.0.0-3 -- Fix running unittests as not-root user - -* Thu Sep 27 2018 Tom Stellard - 7.0.0-2 -- Fixes for llvm-test package: -- Add some missing Requires -- Add --threads option to run-lit-tests script -- Set PATH so lit can find tools like count, not, etc. -- Don't hardcode tools directory to /usr/lib64/llvm -- Fix typo in yaml-bench define -- Only print information about failing tests - -* Fri Sep 21 2018 Tom Stellard - 7.0.0-1 -- 7.0.0 Release - -* Thu Sep 13 2018 Tom Stellard - 7.0.0-0.15.rc3 -- Disable rpath on install LLVM and related sub-projects - -* Wed Sep 12 2018 Tom Stellard - 7.0.0-0.14.rc3 -- Remove rpath from executables and libraries - -* Tue Sep 11 2018 Tom Stellard - 7.0.0-0.13.rc3 -- Re-enable arm and aarch64 targets on x86_64 - -* Mon Sep 10 2018 Tom Stellard - 7.0.0-0.12.rc3 -- 7.0.0-rc3 Release - -* Fri Sep 07 2018 Tom Stellard - 7.0.0-0.11.rc2 -- Use python3 shebang for opt-viewewr scripts - -* Thu Aug 30 2018 Tom Stellard - 7.0.0-0.10.rc2 -- Drop all uses of python2 from lit tests - -* Thu Aug 30 2018 Tom Stellard - 7.0.0-0.9.rc2 -- Build the gold plugin on all supported architectures - -* Wed Aug 29 2018 Kevin Fenzi - 7.0.0-0.8.rc2 -- Re-enable debuginfo to avoid 25x size increase. - -* Tue Aug 28 2018 Tom Stellard - 7.0.0-0.7.rc2 -- 7.0.0-rc2 Release - -* Tue Aug 28 2018 Tom Stellard - 7.0.0-0.6.rc1 -- Guard valgrind usage with valgrind_arches macro - -* Thu Aug 23 2018 Tom Stellard - 7.0.0-0.5.rc1 -- Package lit tests and googletest sources. - -* Mon Aug 20 2018 Tom Stellard - 7.0.0-0.4.rc1 -- Re-enable AMDGPU target on ARM rhbz#1618922 - -* Mon Aug 13 2018 Tom Stellard - 7.0.0-0.3.rc1 -- Drop references to TestPlugin.so from cmake files - -* Fri Aug 10 2018 Tom Stellard - 7.0.0-0.2.rc1 -- Fixes for lit tests - -* Fri Aug 10 2018 Tom Stellard - 7.0.0-0.1.rc1 -- 7.0.0-rc1 Release -- Reduce number of enabled targets on all arches. -- Drop s390 detection patch, LLVM does not support s390 codegen. - -* Mon Aug 06 2018 Tom Stellard - 6.0.1-6 -- Backport some fixes needed by mesa and rust - -* Thu Jul 26 2018 Tom Stellard - 6.0.1-5 -- Move libLLVM-6.0.so to llvm6.0-libs. - -* Mon Jul 23 2018 Tom Stellard - 6.0.1-4 -- Rebuild because debuginfo stripping failed with the previous build - -* Fri Jul 13 2018 Tom Stellard - 6.0.1-3 -- Sync specfile with llvm6.0 package - -* Fri Jul 13 2018 Fedora Release Engineering - 6.0.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Mon Jun 25 2018 Tom Stellard - 6.0.1-1 -- 6.0.1 Release - -* Thu Jun 07 2018 Tom Stellard - 6.0.1-0.4.rc2 -- 6.0.1-rc2 - -* Wed Jun 06 2018 Tom Stellard - 6.0.1-0.3.rc1 -- Re-enable all targets to avoid breaking the ABI. - -* Mon Jun 04 2018 Tom Stellard - 6.0.1-0.2.rc1 -- Reduce the number of enabled targets based on the architecture - -* Thu May 10 2018 Tom Stellard - 6.0.1-0.1.rc1 -- 6.0.1 rc1 - -* Tue Mar 27 2018 Tom Stellard - 6.0.0-11 -- Re-enable arm tests that used to hang - -* Thu Mar 22 2018 Tom Stellard - 6.0.0-10 -- Fix testcase in backported patch - -* Tue Mar 20 2018 Tom Stellard - 6.0.0-9 -- Prevent external projects from linking against both static and shared - libraries. rhbz#1558657 - -* Mon Mar 19 2018 Tom Stellard - 6.0.0-8 -- Backport r327651 from trunk rhbz#1554349 - -* Fri Mar 16 2018 Tom Stellard - 6.0.0-7 -- Filter out cxxflags and cflags from llvm-config that aren't supported by clang -- rhbz#1556980 - -* Wed Mar 14 2018 Tom Stellard - 6.0.0-6 -- Enable symbol versioning in libLLVM.so - -* Wed Mar 14 2018 Tom Stellard - 6.0.0-5 -- Stop statically linking libstdc++. This is no longer required by Steam - client, but the steam installer still needs a work-around which should - be handled in the steam package. -* Wed Mar 14 2018 Tom Stellard - 6.0.0-4 -- s/make check/ninja check/ - -* Fri Mar 09 2018 Tom Stellard - 6.0.0-3 -- Backport fix for compile time regression on rust rhbz#1552915 - -* Thu Mar 08 2018 Tom Stellard - 6.0.0-2 -- Build with Ninja: This reduces RPM build time on a 6-core x86_64 builder - from 82 min to 52 min. - -* Thu Mar 08 2018 Tom Stellard - 6.0.0-1 -- 6.0.0 Release - -* Thu Mar 08 2018 Tom Stellard - 6.0.0-0.5.rc2 -- Reduce debuginfo size on i686 to avoid OOM errors during linking - -* Fri Feb 09 2018 Tom Stellard - 6.0.0-0.4.rc2 -- 6.0.1 rc2 - -* Fri Feb 09 2018 Igor Gnatenko - 6.0.0-0.3.rc1 -- Escape macros in %%changelog - -* Thu Feb 08 2018 Fedora Release Engineering - 6.0.0-0.2.rc1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Fri Jan 19 2018 Tom Stellard - 6.0.0-0.1.rc1 -- 6.0.1 rc1 - -* Tue Dec 19 2017 Tom Stellard - 5.0.1-1 -- 5.0.1 Release - -* Mon Nov 20 2017 Tom Stellard - 5.0.0-5 -- Backport debuginfo fix for rust - -* Fri Nov 03 2017 Tom Stellard - 5.0.0-4 -- Reduce debuginfo size for ARM - -* Tue Oct 10 2017 Tom Stellard - 5.0.0-2 -- Reduce memory usage on ARM by disabling debuginfo and some non-ARM targets. - -* Mon Sep 25 2017 Tom Stellard - 5.0.0-1 -- 5.0.0 Release - -* Mon Sep 18 2017 Tom Stellard - 4.0.1-6 -- Add Requires: libedit-devel for llvm-devel - -* Fri Sep 08 2017 Tom Stellard - 4.0.1-5 -- Enable libedit backend for LineEditor API - -* Fri Aug 25 2017 Tom Stellard - 4.0.1-4 -- Enable extra functionality when run the LLVM JIT under valgrind. - -* Thu Aug 03 2017 Fedora Release Engineering - 4.0.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Wed Jul 26 2017 Fedora Release Engineering - 4.0.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Wed Jun 21 2017 Tom Stellard - 4.0.1-1 -- 4.0.1 Release - -* Thu Jun 15 2017 Tom Stellard - 4.0.0-6 -- Install llvm utils - -* Thu Jun 08 2017 Tom Stellard - 4.0.0-5 -- Fix docs-llvm-man target - -* Mon May 01 2017 Tom Stellard - 4.0.0-4 -- Make cmake files no longer depend on static libs (rhbz 1388200) - -* Tue Apr 18 2017 Josh Stone - 4.0.0-3 -- Fix computeKnownBits for ARMISD::CMOV (rust-lang/llvm#67) - -* Mon Apr 03 2017 Tom Stellard - 4.0.0-2 -- Simplify spec with rpm macros. - -* Thu Mar 23 2017 Tom Stellard - 4.0.0-1 -- LLVM 4.0.0 Final Release - -* Wed Mar 22 2017 tstellar@redhat.com - 3.9.1-6 -- Fix %%postun sep for -devel package. - -* Mon Mar 13 2017 Tom Stellard - 3.9.1-5 -- Disable failing tests on ARM. - -* Sun Mar 12 2017 Peter Robinson 3.9.1-4 -- Fix missing mask on relocation for aarch64 (rhbz 1429050) - -* Wed Mar 01 2017 Dave Airlie - 3.9.1-3 -- revert upstream radeonsi breaking change. - -* Thu Feb 23 2017 Josh Stone - 3.9.1-2 -- disable sphinx warnings-as-errors - -* Fri Feb 10 2017 Orion Poplawski - 3.9.1-1 -- llvm 3.9.1 - -* Fri Feb 10 2017 Fedora Release Engineering - 3.9.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Tue Nov 29 2016 Josh Stone - 3.9.0-7 -- Apply backports from rust-lang/llvm#55, #57 - -* Tue Nov 01 2016 Dave Airlie - 3.9.0-5 -- apply the patch from -4 - -* Wed Oct 26 2016 Dave Airlie - 3.9.0-4 -- add fix for lldb out-of-tree build - -* Mon Oct 17 2016 Josh Stone - 3.9.0-3 -- Apply backports from rust-lang/llvm#47, #48, #53, #54 - -* Sat Oct 15 2016 Josh Stone - 3.9.0-2 -- Apply an InstCombine backport via rust-lang/llvm#51 - -* Wed Sep 07 2016 Dave Airlie - 3.9.0-1 -- llvm 3.9.0 -- upstream moved where cmake files are packaged. -- upstream dropped CppBackend - -* Wed Jul 13 2016 Adam Jackson - 3.8.1-1 -- llvm 3.8.1 -- Add mips target -- Fix some shared library mispackaging - -* Tue Jun 07 2016 Jan Vcelak - 3.8.0-2 -- fix color support detection on terminal - -* Thu Mar 10 2016 Dave Airlie 3.8.0-1 -- llvm 3.8.0 release - -* Wed Mar 09 2016 Dan Horák 3.8.0-0.3 -- install back memory consumption workaround for s390 - -* Thu Mar 03 2016 Dave Airlie 3.8.0-0.2 -- llvm 3.8.0 rc3 release - -* Fri Feb 19 2016 Dave Airlie 3.8.0-0.1 -- llvm 3.8.0 rc2 release - -* Tue Feb 16 2016 Dan Horák 3.7.1-7 -- recognize s390 as SystemZ when configuring build - -* Sat Feb 13 2016 Dave Airlie 3.7.1-6 -- export C++ API for mesa. - -* Sat Feb 13 2016 Dave Airlie 3.7.1-5 -- reintroduce llvm-static, clang needs it currently. - -* Fri Feb 12 2016 Dave Airlie 3.7.1-4 -- jump back to single llvm library, the split libs aren't working very well. - -* Fri Feb 05 2016 Dave Airlie 3.7.1-3 -- add missing obsoletes (#1303497) - -* Thu Feb 04 2016 Fedora Release Engineering - 3.7.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Thu Jan 07 2016 Jan Vcelak 3.7.1-1 -- new upstream release -- enable gold linker - -* Wed Nov 04 2015 Jan Vcelak 3.7.0-100 -- fix Requires for subpackages on the main package - -* Tue Oct 06 2015 Jan Vcelak 3.7.0-100 -- initial version using cmake build system - -#endregion changelog +%{?autochangelog} +%{!?autochangelog:%include %{_sourcedir}/changelog} diff --git a/release-keys.asc b/release-keys.asc index 0d3789a..3932562 100644 --- a/release-keys.asc +++ b/release-keys.asc @@ -102,3 +102,29 @@ yWfeofTJ7PhKzoXM2Y/rRFoM5gNh1RVA19ngLT5Jwiof8fPZvHJ/9ZkHn+O7eMNm m5++gYza3pnn2/PoGpGGAKok+sfJiq5Tb7RUefyJTeZiyTZ/XJrA =tMzl -----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEaMgtRhYJKwYBBAHaRw8BAQdA4NRjJPhVd56sOM+QmTbZKkRT3bYbgg6+Bxed +CELeGp+0JUN1bGxlbiBSaG9kZXMgPGN1bGxlbi5yaG9kZXNAYXJtLmNvbT6IkwQT +FgoAOxYhBHEEbR6cZla91hFxhz6Dur9KT56FBQJoyC1GAhsDBQsJCAcCAiICBhUK +CQgLAgQWAgMBAh4HAheAAAoJED6Dur9KT56FkVwA/RLNMBHrjXoAKpRm1iIjiC6w +gLRqGOnj1qAqPqgntMmmAQCQ2lGpw46rvh88ng84IGsRF0JlTAYb6SR/YYNsQyah +Arg4BGjILUYSCisGAQQBl1UBBQEBB0B48hCLw13kduwibGDGoIax0BIa+f66IUC+ +HhNlucsjbgMBCAeIeAQYFgoAIBYhBHEEbR6cZla91hFxhz6Dur9KT56FBQJoyC1G +AhsMAAoJED6Dur9KT56FVssBAO1lL/S2cU65XFHgbjc6crwljDrD7PYbxBA7hDpi +pC4ZAP98rK1hGQ5wxpeiJ0heZ8zhpdUwEeymIDBaIcwgrJRFBQ== +=HcEB +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEaMg2hBYJKwYBBAHaRw8BAQdA2J814YnhPQSdsyjwx8VxZ7AitqCnns9lzvkx +HX9lWMW0JERvdWdsYXMgWXVuZyA8ZG91Z2xhcy55dW5nQHNvbnkuY29tPoiTBBMW +CgA7FiEE/7M2iYDz5rtXNxRaMWxW0GTKy6UFAmjINoQCGwMFCwkIBwICIgIGFQoJ +CAsCBBYCAwECHgcCF4AACgkQMWxW0GTKy6XjYgEApJ7p+o7EAeaaOdO2f440KDfg +t7haaBLaxr5fiaSKjkYA+gLDxWOh39Y84upf23qMmpSTZ3SK5LvJtBTVtV7AEX0B +uDgEaMg2hBIKKwYBBAGXVQEFAQEHQL3CL6jHZAakhtLLj2Ks34u7ItY/7USl/bYk +f/+mZTJMAwEIB4h4BBgWCgAgFiEE/7M2iYDz5rtXNxRaMWxW0GTKy6UFAmjINoQC +GwwACgkQMWxW0GTKy6VTOgEArDn9bg58W7bfZfVfneJJbIeICEf3NN9IovbRbAOB +ax0A/RxtrG4qowLlo907vb25ITOa1hBoheSV2wNoDaDUhFEF +=JQ8u +-----END PGP PUBLIC KEY BLOCK----- diff --git a/sources b/sources index e7847bf..f9d7728 100644 --- a/sources +++ b/sources @@ -1,2 +1,4 @@ SHA512 (llvm-project-20.1.8.src.tar.xz) = f330e72e6a1da468569049437cc0ba7a41abb816ccece7367189344f7ebfef730f4788ac7af2bef0aa8a49341c15ab1d31e941ffa782f264d11fe0dc05470773 +SHA512 (llvm-project-21.1.6.src.tar.xz.sig) = 637cc9f778f8303e80985469c3102573a9cf6264093b1a83fb494e34b5cb444f76cbb7d6d497d44b05250d56e25ec27dd9df685e0b78b23bb71e4bcd05a8facf +SHA512 (llvm-project-21.1.6.src.tar.xz) = f9e6c84828e40cb0a7894258b07240468a9d555c11496a1725bf959444362277a90ea822eeb8c9b51b3b7fecd4dd0b213a28a2f2effefbf43efdd21084d10afc SHA512 (llvm-project-20.1.8.src.tar.xz.sig) = d74369bdb4d1b82775161ea53c9c5f3a23ce810f4df5ff617123023f9d8ce720e7d6ecc9e17f8ebd39fd9e7a9de79560abdf2ffe73bcb907a43148d43665d619 diff --git a/tests/README.md b/tests/README.md index 042b179..fc0f851 100644 --- a/tests/README.md +++ b/tests/README.md @@ -2,7 +2,7 @@ The tests for LLVM are in a separate repo: -* llvm: https://src.fedoraproject.org/tests/llvm.git/ +* llvm: https://gitlab.com/redhat/centos-stream/tests/llvm.git/ This directory should contain only fmf plans (such as build-gating.fmf) which import the tests from the tests repo. This can be done using the "url" parameter of the diff --git a/tests/build-gating.fmf b/tests/build-gating.fmf index db92f08..3beb9b7 100644 --- a/tests/build-gating.fmf +++ b/tests/build-gating.fmf @@ -40,11 +40,10 @@ adjust: or distro == rhel-8 discover: - - name: llvm-tests - how: fmf - url: https://gitlab.com/redhat/centos-stream/tests/llvm.git - ref: main - filter: "tag:-spoils-installation & tag:-not-in-default" + how: fmf + url: https://gitlab.com/redhat/centos-stream/tests/llvm.git + ref: main + filter: "tag:-spoils-installation & tag:-not-in-default" execute: how: tmt provision: diff --git a/tests/lld-alternatives.fmf b/tests/lld-alternatives.fmf index 3b46dff..f8a907b 100644 --- a/tests/lld-alternatives.fmf +++ b/tests/lld-alternatives.fmf @@ -8,7 +8,7 @@ adjust: enabled: false discover: - - name: lld-tests + - name: lld-alternatives how: fmf url: https://gitlab.com/redhat/centos-stream/tests/llvm.git ref: main