Compare commits
No commits in common. "c8-stream-rhel8" and "a9-beta" have entirely different histories.
c8-stream-
...
a9-beta
12
.gitignore
vendored
12
.gitignore
vendored
@ -1,6 +1,6 @@
|
|||||||
SOURCES/cmake-17.0.6.src.tar.xz
|
SOURCES/cmake-16.0.6.src.tar.xz
|
||||||
SOURCES/cmake-17.0.6.src.tar.xz.sig
|
SOURCES/cmake-16.0.6.src.tar.xz.sig
|
||||||
SOURCES/llvm-17.0.6.src.tar.xz
|
SOURCES/llvm-16.0.6.src.tar.xz
|
||||||
SOURCES/llvm-17.0.6.src.tar.xz.sig
|
SOURCES/llvm-16.0.6.src.tar.xz.sig
|
||||||
SOURCES/third-party-17.0.6.src.tar.xz
|
SOURCES/third-party-16.0.6.src.tar.xz
|
||||||
SOURCES/third-party-17.0.6.src.tar.xz.sig
|
SOURCES/third-party-16.0.6.src.tar.xz.sig
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
4b397344260c934e687be7efa0f8456a9dd46f44 SOURCES/cmake-17.0.6.src.tar.xz
|
0de534cfef38697e115c3ae80634765f05e78e5b SOURCES/cmake-16.0.6.src.tar.xz
|
||||||
fa31d348b6780478403484e22139d25f403503d4 SOURCES/cmake-17.0.6.src.tar.xz.sig
|
2db5c88fe9277bb0fa85f49b58e946e49ff235c2 SOURCES/cmake-16.0.6.src.tar.xz.sig
|
||||||
860a3605f08a0a56a8de4e073e26a259871623a6 SOURCES/llvm-17.0.6.src.tar.xz
|
072d2fb4b10f95d06189de00eb7f7e9b35c54e9a SOURCES/llvm-16.0.6.src.tar.xz
|
||||||
2ad479ab00a6d5e61ecb953997cfeef6650a687a SOURCES/llvm-17.0.6.src.tar.xz.sig
|
bfc74b3868c69ce674a583c91e938b6d4cf0fded SOURCES/llvm-16.0.6.src.tar.xz.sig
|
||||||
a35dc22cd3d983a556f6e4a63c8dac6a84e01caf SOURCES/third-party-17.0.6.src.tar.xz
|
5b1a58de6ed9d154a38edb6386a5749576e0b96a SOURCES/third-party-16.0.6.src.tar.xz
|
||||||
12128cdab7414aeedd573c61cbc2fa82e75491db SOURCES/third-party-17.0.6.src.tar.xz.sig
|
51ad6a8ccc5ccd40faff6f1c98a2f33a9b600f88 SOURCES/third-party-16.0.6.src.tar.xz.sig
|
||||||
|
@ -1,98 +0,0 @@
|
|||||||
From dbc6b9344bde269a2499d47e7f08c172a88f289a Mon Sep 17 00:00:00 2001
|
|
||||||
From: pvanhout <pierre.vanhoutryve@amd.com>
|
|
||||||
Date: Thu, 3 Aug 2023 10:53:08 +0200
|
|
||||||
Subject: [PATCH] [DAG] Fix crash in replaceStoreOfInsertLoad
|
|
||||||
|
|
||||||
Idx's type can be different from Ptr's, causing a "Binary operator types must match" assertion failure when emitting the MUL.
|
|
||||||
|
|
||||||
Reviewed By: arsenm
|
|
||||||
|
|
||||||
Differential Revision: https://reviews.llvm.org/D156972
|
|
||||||
|
|
||||||
(cherry picked from commit 98ccc70b93a39a7ea3e26f7f5b5fe40d39b5a7e5)
|
|
||||||
---
|
|
||||||
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 2 +-
|
|
||||||
.../AMDGPU/replace-store-of-insert-load.ll | 58 +++++++++++++++++++
|
|
||||||
2 files changed, 59 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 llvm/test/CodeGen/AMDGPU/replace-store-of-insert-load.ll
|
|
||||||
|
|
||||||
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
|
|
||||||
index 235f0da86b90..dbc8be3c52b8 100644
|
|
||||||
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
|
|
||||||
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
|
|
||||||
@@ -20517,7 +20517,7 @@ SDValue DAGCombiner::replaceStoreOfInsertLoad(StoreSDNode *ST) {
|
|
||||||
EVT PtrVT = Ptr.getValueType();
|
|
||||||
|
|
||||||
SDValue Offset =
|
|
||||||
- DAG.getNode(ISD::MUL, DL, PtrVT, Idx,
|
|
||||||
+ DAG.getNode(ISD::MUL, DL, PtrVT, DAG.getZExtOrTrunc(Idx, DL, PtrVT),
|
|
||||||
DAG.getConstant(EltVT.getSizeInBits() / 8, DL, PtrVT));
|
|
||||||
SDValue NewPtr = DAG.getNode(ISD::ADD, DL, PtrVT, Ptr, Offset);
|
|
||||||
MachinePointerInfo PointerInfo(ST->getAddressSpace());
|
|
||||||
diff --git a/llvm/test/CodeGen/AMDGPU/replace-store-of-insert-load.ll b/llvm/test/CodeGen/AMDGPU/replace-store-of-insert-load.ll
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..35a602af68c0
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/llvm/test/CodeGen/AMDGPU/replace-store-of-insert-load.ll
|
|
||||||
@@ -0,0 +1,58 @@
|
|
||||||
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
|
|
||||||
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck %s
|
|
||||||
+
|
|
||||||
+; Regression test for a bug in `DAGCombiner::replaceStoreOfInsertLoad` where
|
|
||||||
+; Idx could be smaller than PtrVT, causing a MUL to be emitted with inconsistent
|
|
||||||
+; LHS/RHS types.
|
|
||||||
+
|
|
||||||
+define void @testcase_0(ptr addrspace(1) %in, float %arg) {
|
|
||||||
+; CHECK-LABEL: testcase_0:
|
|
||||||
+; CHECK: ; %bb.0:
|
|
||||||
+; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
|
|
||||||
+; CHECK-NEXT: global_store_dword v[0:1], v2, off offset:12
|
|
||||||
+; CHECK-NEXT: s_waitcnt vmcnt(0)
|
|
||||||
+; CHECK-NEXT: s_setpc_b64 s[30:31]
|
|
||||||
+ %loaded = load <4 x float>, ptr addrspace(1) %in
|
|
||||||
+ %modified = insertelement <4 x float> %loaded, float %arg, i64 3
|
|
||||||
+ store <4 x float> %modified, ptr addrspace(1) %in
|
|
||||||
+ ret void
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+define void @testcase_1(ptr addrspace(1) %in, float %arg) {
|
|
||||||
+; CHECK-LABEL: testcase_1:
|
|
||||||
+; CHECK: ; %bb.0:
|
|
||||||
+; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
|
|
||||||
+; CHECK-NEXT: global_store_dword v[0:1], v2, off offset:16
|
|
||||||
+; CHECK-NEXT: s_waitcnt vmcnt(0)
|
|
||||||
+; CHECK-NEXT: s_setpc_b64 s[30:31]
|
|
||||||
+ %loaded = load <6 x float>, ptr addrspace(1) %in
|
|
||||||
+ %modified = insertelement <6 x float> %loaded, float %arg, i64 4
|
|
||||||
+ store <6 x float> %modified, ptr addrspace(1) %in
|
|
||||||
+ ret void
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+define void @testcase_2(ptr addrspace(1) %in, double %arg) {
|
|
||||||
+; CHECK-LABEL: testcase_2:
|
|
||||||
+; CHECK: ; %bb.0:
|
|
||||||
+; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
|
|
||||||
+; CHECK-NEXT: global_store_dwordx2 v[0:1], v[2:3], off offset:8
|
|
||||||
+; CHECK-NEXT: s_waitcnt vmcnt(0)
|
|
||||||
+; CHECK-NEXT: s_setpc_b64 s[30:31]
|
|
||||||
+ %loaded = load <4 x double>, ptr addrspace(1) %in
|
|
||||||
+ %modified = insertelement <4 x double> %loaded, double %arg, i64 1
|
|
||||||
+ store <4 x double> %modified, ptr addrspace(1) %in
|
|
||||||
+ ret void
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+define void @testcase_3(ptr addrspace(1) %in, double %arg) {
|
|
||||||
+; CHECK-LABEL: testcase_3:
|
|
||||||
+; CHECK: ; %bb.0:
|
|
||||||
+; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
|
|
||||||
+; CHECK-NEXT: global_store_dwordx2 v[0:1], v[2:3], off offset:56
|
|
||||||
+; CHECK-NEXT: s_waitcnt vmcnt(0)
|
|
||||||
+; CHECK-NEXT: s_setpc_b64 s[30:31]
|
|
||||||
+ %loaded = load <8 x double>, ptr addrspace(1) %in
|
|
||||||
+ %modified = insertelement <8 x double> %loaded, double %arg, i64 7
|
|
||||||
+ store <8 x double> %modified, ptr addrspace(1) %in
|
|
||||||
+ ret void
|
|
||||||
+}
|
|
||||||
--
|
|
||||||
2.44.0
|
|
||||||
|
|
25
SOURCES/0001-Deactivate-markdown-doc.patch
Normal file
25
SOURCES/0001-Deactivate-markdown-doc.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
diff -Naur a/llvm/docs/conf.py b/llvm/docs/conf.py
|
||||||
|
--- a/llvm/docs/conf.py 2020-09-15 09:12:24.318287611 +0000
|
||||||
|
+++ b/llvm/docs/conf.py 2020-09-15 15:01:00.025893199 +0000
|
||||||
|
@@ -36,20 +36,7 @@
|
||||||
|
'.rst': 'restructuredtext',
|
||||||
|
}
|
||||||
|
|
||||||
|
-try:
|
||||||
|
- import recommonmark
|
||||||
|
-except ImportError:
|
||||||
|
- # manpages do not use any .md sources
|
||||||
|
- if not tags.has('builder-man'):
|
||||||
|
- raise
|
||||||
|
-else:
|
||||||
|
- import sphinx
|
||||||
|
- if sphinx.version_info >= (3, 0):
|
||||||
|
- # This requires 0.5 or later.
|
||||||
|
- extensions.append('recommonmark')
|
||||||
|
- else:
|
||||||
|
- source_parsers = {'.md': 'recommonmark.parser.CommonMarkParser'}
|
||||||
|
- source_suffix['.md'] = 'markdown'
|
||||||
|
+import sphinx
|
||||||
|
|
||||||
|
# The encoding of source files.
|
||||||
|
#source_encoding = 'utf-8-sig'
|
@ -1,74 +0,0 @@
|
|||||||
From 9d1f05a7b8537deb5f626cd1b7b26ef2678f4c8e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Arthur Eubanks <aeubanks@google.com>
|
|
||||||
Date: Thu, 27 Jul 2023 13:27:58 -0700
|
|
||||||
Subject: [PATCH] [PEI] Don't zero out noreg operands
|
|
||||||
|
|
||||||
A tail call may have $noreg operands.
|
|
||||||
|
|
||||||
Fixes a crash.
|
|
||||||
|
|
||||||
Reviewed By: xgupta
|
|
||||||
|
|
||||||
Differential Revision: https://reviews.llvm.org/D156485
|
|
||||||
|
|
||||||
(cherry picked from commit f800c1f3b207e7bcdc8b4c7192928d9a078242a0)
|
|
||||||
---
|
|
||||||
llvm/lib/CodeGen/PrologEpilogInserter.cpp | 9 +++++++--
|
|
||||||
llvm/test/CodeGen/X86/zero-call-used-regs.ll | 14 ++++++++++++++
|
|
||||||
2 files changed, 21 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/llvm/lib/CodeGen/PrologEpilogInserter.cpp b/llvm/lib/CodeGen/PrologEpilogInserter.cpp
|
|
||||||
index e323aaaeefaf..49047719fdaa 100644
|
|
||||||
--- a/llvm/lib/CodeGen/PrologEpilogInserter.cpp
|
|
||||||
+++ b/llvm/lib/CodeGen/PrologEpilogInserter.cpp
|
|
||||||
@@ -1285,6 +1285,8 @@ void PEI::insertZeroCallUsedRegs(MachineFunction &MF) {
|
|
||||||
continue;
|
|
||||||
|
|
||||||
MCRegister Reg = MO.getReg();
|
|
||||||
+ if (!Reg)
|
|
||||||
+ continue;
|
|
||||||
|
|
||||||
// This picks up sibling registers (e.q. %al -> %ah).
|
|
||||||
for (MCRegUnit Unit : TRI.regunits(Reg))
|
|
||||||
@@ -1308,8 +1310,11 @@ void PEI::insertZeroCallUsedRegs(MachineFunction &MF) {
|
|
||||||
if (!MO.isReg())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- for (const MCPhysReg &Reg :
|
|
||||||
- TRI.sub_and_superregs_inclusive(MO.getReg()))
|
|
||||||
+ MCRegister Reg = MO.getReg();
|
|
||||||
+ if (!Reg)
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ for (const MCPhysReg Reg : TRI.sub_and_superregs_inclusive(Reg))
|
|
||||||
RegsToZero.reset(Reg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/llvm/test/CodeGen/X86/zero-call-used-regs.ll b/llvm/test/CodeGen/X86/zero-call-used-regs.ll
|
|
||||||
index 63d51c916bb9..97ad5ce9c8cb 100644
|
|
||||||
--- a/llvm/test/CodeGen/X86/zero-call-used-regs.ll
|
|
||||||
+++ b/llvm/test/CodeGen/X86/zero-call-used-regs.ll
|
|
||||||
@@ -241,6 +241,20 @@ entry:
|
|
||||||
ret i32 %x
|
|
||||||
}
|
|
||||||
|
|
||||||
+define dso_local void @tailcall(ptr %p) local_unnamed_addr #0 "zero-call-used-regs"="used-gpr" {
|
|
||||||
+; I386-LABEL: tailcall:
|
|
||||||
+; I386: # %bb.0:
|
|
||||||
+; I386-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
||||||
+; I386-NEXT: jmpl *(%eax) # TAILCALL
|
|
||||||
+;
|
|
||||||
+; X86-64-LABEL: tailcall:
|
|
||||||
+; X86-64: # %bb.0:
|
|
||||||
+; X86-64-NEXT: jmpq *(%rdi) # TAILCALL
|
|
||||||
+ %c = load ptr, ptr %p
|
|
||||||
+ tail call void %c()
|
|
||||||
+ ret void
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
; Don't emit zeroing registers in "main" function.
|
|
||||||
define dso_local i32 @main() local_unnamed_addr #1 {
|
|
||||||
; I386-LABEL: main:
|
|
||||||
--
|
|
||||||
2.43.0
|
|
||||||
|
|
@ -0,0 +1,184 @@
|
|||||||
|
From efbaf8bc61f4c0e29a3eaafb11ac0ddda8bd3dff Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ulrich Weigand <ulrich.weigand@de.ibm.com>
|
||||||
|
Date: Fri, 30 Jun 2023 16:02:56 +0200
|
||||||
|
Subject: [PATCH] [SystemZ] Improve error messages for unsupported relocations
|
||||||
|
|
||||||
|
In the SystemZMCObjectWriter, we currently just abort in case
|
||||||
|
some unsupported relocation in requested. However, as this
|
||||||
|
situation can be triggered by invalid (inline) assembler input,
|
||||||
|
we should really get a regular error message instead.
|
||||||
|
---
|
||||||
|
.../MCTargetDesc/SystemZMCObjectWriter.cpp | 59 +++++++++++--------
|
||||||
|
1 file changed, 35 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp
|
||||||
|
index c23463ab9bde..0b11468afc52 100644
|
||||||
|
--- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp
|
||||||
|
+++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp
|
||||||
|
@@ -9,6 +9,7 @@
|
||||||
|
#include "MCTargetDesc/SystemZMCFixups.h"
|
||||||
|
#include "MCTargetDesc/SystemZMCTargetDesc.h"
|
||||||
|
#include "llvm/BinaryFormat/ELF.h"
|
||||||
|
+#include "llvm/MC/MCContext.h"
|
||||||
|
#include "llvm/MC/MCELFObjectWriter.h"
|
||||||
|
#include "llvm/MC/MCExpr.h"
|
||||||
|
#include "llvm/MC/MCFixup.h"
|
||||||
|
@@ -40,7 +41,7 @@ SystemZObjectWriter::SystemZObjectWriter(uint8_t OSABI)
|
||||||
|
/*HasRelocationAddend_=*/ true) {}
|
||||||
|
|
||||||
|
// Return the relocation type for an absolute value of MCFixupKind Kind.
|
||||||
|
-static unsigned getAbsoluteReloc(unsigned Kind) {
|
||||||
|
+static unsigned getAbsoluteReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) {
|
||||||
|
switch (Kind) {
|
||||||
|
case FK_Data_1: return ELF::R_390_8;
|
||||||
|
case FK_Data_2: return ELF::R_390_16;
|
||||||
|
@@ -49,11 +50,12 @@ static unsigned getAbsoluteReloc(unsigned Kind) {
|
||||||
|
case SystemZ::FK_390_12: return ELF::R_390_12;
|
||||||
|
case SystemZ::FK_390_20: return ELF::R_390_20;
|
||||||
|
}
|
||||||
|
- llvm_unreachable("Unsupported absolute address");
|
||||||
|
+ Ctx.reportError(Loc, "Unsupported absolute address");
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the relocation type for a PC-relative value of MCFixupKind Kind.
|
||||||
|
-static unsigned getPCRelReloc(unsigned Kind) {
|
||||||
|
+static unsigned getPCRelReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) {
|
||||||
|
switch (Kind) {
|
||||||
|
case FK_Data_2: return ELF::R_390_PC16;
|
||||||
|
case FK_Data_4: return ELF::R_390_PC32;
|
||||||
|
@@ -63,62 +65,69 @@ static unsigned getPCRelReloc(unsigned Kind) {
|
||||||
|
case SystemZ::FK_390_PC24DBL: return ELF::R_390_PC24DBL;
|
||||||
|
case SystemZ::FK_390_PC32DBL: return ELF::R_390_PC32DBL;
|
||||||
|
}
|
||||||
|
- llvm_unreachable("Unsupported PC-relative address");
|
||||||
|
+ Ctx.reportError(Loc, "Unsupported PC-relative address");
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the R_390_TLS_LE* relocation type for MCFixupKind Kind.
|
||||||
|
-static unsigned getTLSLEReloc(unsigned Kind) {
|
||||||
|
+static unsigned getTLSLEReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) {
|
||||||
|
switch (Kind) {
|
||||||
|
case FK_Data_4: return ELF::R_390_TLS_LE32;
|
||||||
|
case FK_Data_8: return ELF::R_390_TLS_LE64;
|
||||||
|
}
|
||||||
|
- llvm_unreachable("Unsupported absolute address");
|
||||||
|
+ Ctx.reportError(Loc, "Unsupported thread-local address (local-exec)");
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the R_390_TLS_LDO* relocation type for MCFixupKind Kind.
|
||||||
|
-static unsigned getTLSLDOReloc(unsigned Kind) {
|
||||||
|
+static unsigned getTLSLDOReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) {
|
||||||
|
switch (Kind) {
|
||||||
|
case FK_Data_4: return ELF::R_390_TLS_LDO32;
|
||||||
|
case FK_Data_8: return ELF::R_390_TLS_LDO64;
|
||||||
|
}
|
||||||
|
- llvm_unreachable("Unsupported absolute address");
|
||||||
|
+ Ctx.reportError(Loc, "Unsupported thread-local address (local-dynamic)");
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the R_390_TLS_LDM* relocation type for MCFixupKind Kind.
|
||||||
|
-static unsigned getTLSLDMReloc(unsigned Kind) {
|
||||||
|
+static unsigned getTLSLDMReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) {
|
||||||
|
switch (Kind) {
|
||||||
|
case FK_Data_4: return ELF::R_390_TLS_LDM32;
|
||||||
|
case FK_Data_8: return ELF::R_390_TLS_LDM64;
|
||||||
|
case SystemZ::FK_390_TLS_CALL: return ELF::R_390_TLS_LDCALL;
|
||||||
|
}
|
||||||
|
- llvm_unreachable("Unsupported absolute address");
|
||||||
|
+ Ctx.reportError(Loc, "Unsupported thread-local address (local-dynamic)");
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the R_390_TLS_GD* relocation type for MCFixupKind Kind.
|
||||||
|
-static unsigned getTLSGDReloc(unsigned Kind) {
|
||||||
|
+static unsigned getTLSGDReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) {
|
||||||
|
switch (Kind) {
|
||||||
|
case FK_Data_4: return ELF::R_390_TLS_GD32;
|
||||||
|
case FK_Data_8: return ELF::R_390_TLS_GD64;
|
||||||
|
case SystemZ::FK_390_TLS_CALL: return ELF::R_390_TLS_GDCALL;
|
||||||
|
}
|
||||||
|
- llvm_unreachable("Unsupported absolute address");
|
||||||
|
+ Ctx.reportError(Loc, "Unsupported thread-local address (general-dynamic)");
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the PLT relocation counterpart of MCFixupKind Kind.
|
||||||
|
-static unsigned getPLTReloc(unsigned Kind) {
|
||||||
|
+static unsigned getPLTReloc(MCContext &Ctx, SMLoc Loc, unsigned Kind) {
|
||||||
|
switch (Kind) {
|
||||||
|
case SystemZ::FK_390_PC12DBL: return ELF::R_390_PLT12DBL;
|
||||||
|
case SystemZ::FK_390_PC16DBL: return ELF::R_390_PLT16DBL;
|
||||||
|
case SystemZ::FK_390_PC24DBL: return ELF::R_390_PLT24DBL;
|
||||||
|
case SystemZ::FK_390_PC32DBL: return ELF::R_390_PLT32DBL;
|
||||||
|
}
|
||||||
|
- llvm_unreachable("Unsupported absolute address");
|
||||||
|
+ Ctx.reportError(Loc, "Unsupported PC-relative PLT address");
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned SystemZObjectWriter::getRelocType(MCContext &Ctx,
|
||||||
|
const MCValue &Target,
|
||||||
|
const MCFixup &Fixup,
|
||||||
|
bool IsPCRel) const {
|
||||||
|
+ SMLoc Loc = Fixup.getLoc();
|
||||||
|
unsigned Kind = Fixup.getKind();
|
||||||
|
if (Kind >= FirstLiteralRelocationKind)
|
||||||
|
return Kind - FirstLiteralRelocationKind;
|
||||||
|
@@ -126,38 +135,40 @@ unsigned SystemZObjectWriter::getRelocType(MCContext &Ctx,
|
||||||
|
switch (Modifier) {
|
||||||
|
case MCSymbolRefExpr::VK_None:
|
||||||
|
if (IsPCRel)
|
||||||
|
- return getPCRelReloc(Kind);
|
||||||
|
- return getAbsoluteReloc(Kind);
|
||||||
|
+ return getPCRelReloc(Ctx, Loc, Kind);
|
||||||
|
+ return getAbsoluteReloc(Ctx, Loc, Kind);
|
||||||
|
|
||||||
|
case MCSymbolRefExpr::VK_NTPOFF:
|
||||||
|
assert(!IsPCRel && "NTPOFF shouldn't be PC-relative");
|
||||||
|
- return getTLSLEReloc(Kind);
|
||||||
|
+ return getTLSLEReloc(Ctx, Loc, Kind);
|
||||||
|
|
||||||
|
case MCSymbolRefExpr::VK_INDNTPOFF:
|
||||||
|
if (IsPCRel && Kind == SystemZ::FK_390_PC32DBL)
|
||||||
|
return ELF::R_390_TLS_IEENT;
|
||||||
|
- llvm_unreachable("Only PC-relative INDNTPOFF accesses are supported for now");
|
||||||
|
+ Ctx.reportError(Loc, "Only PC-relative INDNTPOFF accesses are supported for now");
|
||||||
|
+ return 0;
|
||||||
|
|
||||||
|
case MCSymbolRefExpr::VK_DTPOFF:
|
||||||
|
assert(!IsPCRel && "DTPOFF shouldn't be PC-relative");
|
||||||
|
- return getTLSLDOReloc(Kind);
|
||||||
|
+ return getTLSLDOReloc(Ctx, Loc, Kind);
|
||||||
|
|
||||||
|
case MCSymbolRefExpr::VK_TLSLDM:
|
||||||
|
assert(!IsPCRel && "TLSLDM shouldn't be PC-relative");
|
||||||
|
- return getTLSLDMReloc(Kind);
|
||||||
|
+ return getTLSLDMReloc(Ctx, Loc, Kind);
|
||||||
|
|
||||||
|
case MCSymbolRefExpr::VK_TLSGD:
|
||||||
|
assert(!IsPCRel && "TLSGD shouldn't be PC-relative");
|
||||||
|
- return getTLSGDReloc(Kind);
|
||||||
|
+ return getTLSGDReloc(Ctx, Loc, Kind);
|
||||||
|
|
||||||
|
case MCSymbolRefExpr::VK_GOT:
|
||||||
|
if (IsPCRel && Kind == SystemZ::FK_390_PC32DBL)
|
||||||
|
return ELF::R_390_GOTENT;
|
||||||
|
- llvm_unreachable("Only PC-relative GOT accesses are supported for now");
|
||||||
|
+ Ctx.reportError(Loc, "Only PC-relative GOT accesses are supported for now");
|
||||||
|
+ return 0;
|
||||||
|
|
||||||
|
case MCSymbolRefExpr::VK_PLT:
|
||||||
|
- assert(IsPCRel && "@PLT shouldt be PC-relative");
|
||||||
|
- return getPLTReloc(Kind);
|
||||||
|
+ assert(IsPCRel && "@PLT shouldn't be PC-relative");
|
||||||
|
+ return getPLTReloc(Ctx, Loc, Kind);
|
||||||
|
|
||||||
|
default:
|
||||||
|
llvm_unreachable("Modifier not supported");
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
32
SOURCES/0001-llvm-Add-install-targets-for-gtest.patch
Normal file
32
SOURCES/0001-llvm-Add-install-targets-for-gtest.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From 8cc3870f09d728d9017c72eba9520117a4283fee Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Stellard <tstellar@redhat.com>
|
||||||
|
Date: Thu, 17 Nov 2022 09:01:10 +0000
|
||||||
|
Subject: Add install targets for gtest
|
||||||
|
|
||||||
|
Stand-alone builds need an installed version of gtest in order to run
|
||||||
|
the unittests.
|
||||||
|
|
||||||
|
Differential Revision: https://reviews.llvm.org/D137890
|
||||||
|
---
|
||||||
|
llvm/CMakeLists.txt | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
|
||||||
|
index 60e1f29620af..d91338532815 100644
|
||||||
|
--- a/llvm/CMakeLists.txt
|
||||||
|
+++ b/llvm/CMakeLists.txt
|
||||||
|
@@ -693,6 +693,11 @@ option(LLVM_BUILD_TESTS
|
||||||
|
"Build LLVM unit tests. If OFF, just generate build targets." OFF)
|
||||||
|
option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON)
|
||||||
|
|
||||||
|
+option(LLVM_INSTALL_GTEST
|
||||||
|
+ "Install the llvm gtest library. This should be on if you want to do
|
||||||
|
+ stand-alone builds of the other projects and run their unit tests." OFF)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
option(LLVM_BUILD_BENCHMARKS "Add LLVM benchmark targets to the list of default
|
||||||
|
targets. If OFF, benchmarks still could be built using Benchmarks target." OFF)
|
||||||
|
option(LLVM_INCLUDE_BENCHMARKS "Generate benchmark targets. If OFF, benchmarks can't be built." ON)
|
||||||
|
--
|
||||||
|
2.34.3
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
diff -Naur a/llvm/docs/conf.py b/llvm/docs/conf.py
|
|
||||||
--- a/llvm/docs/conf.py 2020-09-15 09:12:24.318287611 +0000
|
|
||||||
+++ b/llvm/docs/conf.py 2020-09-15 15:01:00.025893199 +0000
|
|
||||||
@@ -36,21 +36,7 @@
|
|
||||||
".rst": "restructuredtext",
|
|
||||||
}
|
|
||||||
|
|
||||||
-try:
|
|
||||||
- import recommonmark
|
|
||||||
-except ImportError:
|
|
||||||
- # manpages do not use any .md sources
|
|
||||||
- if not tags.has("builder-man"):
|
|
||||||
- raise
|
|
||||||
-else:
|
|
||||||
- import sphinx
|
|
||||||
-
|
|
||||||
- if sphinx.version_info >= (3, 0):
|
|
||||||
- # This requires 0.5 or later.
|
|
||||||
- extensions.append("recommonmark")
|
|
||||||
- else:
|
|
||||||
- source_parsers = {".md": "recommonmark.parser.CommonMarkParser"}
|
|
||||||
- source_suffix[".md"] = "markdown"
|
|
||||||
+import sphinx
|
|
||||||
|
|
||||||
# The encoding of source files.
|
|
||||||
# source_encoding = 'utf-8-sig'
|
|
47
SOURCES/0201-third-party-Add-install-targets-for-gtest.patch
Normal file
47
SOURCES/0201-third-party-Add-install-targets-for-gtest.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
From 8cc3870f09d728d9017c72eba9520117a4283fee Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Stellard <tstellar@redhat.com>
|
||||||
|
Date: Thu, 17 Nov 2022 09:01:10 +0000
|
||||||
|
Subject: Add install targets for gtest
|
||||||
|
|
||||||
|
Stand-alone builds need an installed version of gtest in order to run
|
||||||
|
the unittests.
|
||||||
|
|
||||||
|
Differential Revision: https://reviews.llvm.org/D137890
|
||||||
|
---
|
||||||
|
third-party/unittest/CMakeLists.txt | 15 ++++++++++++++-
|
||||||
|
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/third-party/unittest/CMakeLists.txt b/third-party/unittest/CMakeLists.txt
|
||||||
|
index 0e54e0e57c35..1d2a52730d7d 100644
|
||||||
|
--- a/third-party/unittest/CMakeLists.txt
|
||||||
|
+++ b/third-party/unittest/CMakeLists.txt
|
||||||
|
@@ -65,12 +65,25 @@ if (NOT LLVM_ENABLE_THREADS)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
target_include_directories(llvm_gtest
|
||||||
|
- PUBLIC googletest/include googlemock/include
|
||||||
|
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/googletest/include>
|
||||||
|
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/googlemock/include>
|
||||||
|
+ $<INSTALL_INTERFACE:include/llvm-gtest/>
|
||||||
|
+ $<INSTALL_INTERFACE:include/llvm-gmock/>
|
||||||
|
PRIVATE googletest googlemock
|
||||||
|
)
|
||||||
|
|
||||||
|
add_subdirectory(UnitTestMain)
|
||||||
|
|
||||||
|
+if (LLVM_INSTALL_GTEST)
|
||||||
|
+export(TARGETS llvm_gtest llvm_gtest_main LLVMTestingSupport FILE LLVMGTestConfig.cmake)
|
||||||
|
+install(TARGETS llvm_gtest llvm_gtest_main LLVMTestingSupport EXPORT LLVMGTestConfig
|
||||||
|
+ ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT llvm_gtest)
|
||||||
|
+ install(EXPORT LLVMGTestConfig DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} COMPONENT llvm_gtest)
|
||||||
|
+ add_llvm_install_targets(install-llvm_gtest COMPONENT llvm_gtest DEPENDS llvm_gtest LLVMGTestConfig.cmake)
|
||||||
|
+ install(DIRECTORY googletest/include/gtest/ DESTINATION include/llvm-gtest/gtest/ COMPONENT llvm_gtest)
|
||||||
|
+ install(DIRECTORY googlemock/include/gmock/ DESTINATION include/llvm-gmock/gmock/ COMPONENT llvm_gtest)
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
# When LLVM_LINK_LLVM_DYLIB is enabled, libLLVM.so is added to the interface
|
||||||
|
# link libraries for gtest and gtest_main. This means that any target, like
|
||||||
|
# unittests for example, that links against gtest will be forced to link
|
||||||
|
--
|
||||||
|
2.34.3
|
||||||
|
|
46
SOURCES/D156379.diff
Normal file
46
SOURCES/D156379.diff
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
diff --git a/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp b/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
|
||||||
|
--- a/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
|
||||||
|
+++ b/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
|
||||||
|
@@ -1152,6 +1152,11 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Type legalization (via getNumberOfParts) can't handle structs
|
||||||
|
+ if (TLI->getValueType(DL, Src, true) == MVT::Other)
|
||||||
|
+ return BaseT::getMemoryOpCost(Opcode, Src, Alignment, AddressSpace,
|
||||||
|
+ CostKind);
|
||||||
|
+
|
||||||
|
unsigned NumOps =
|
||||||
|
(Src->isVectorTy() ? getNumVectorRegs(Src) : getNumberOfParts(Src));
|
||||||
|
|
||||||
|
diff --git a/llvm/test/Analysis/CostModel/SystemZ/struct-cost-crash.ll b/llvm/test/Analysis/CostModel/SystemZ/struct-cost-crash.ll
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/llvm/test/Analysis/CostModel/SystemZ/struct-cost-crash.ll
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 2
|
||||||
|
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output < %s | FileCheck %s
|
||||||
|
+;
|
||||||
|
+; Check that SystemZTTIImpl::getMemoryOpCost doesn't try to legalize structs,
|
||||||
|
+; which was failing llvm_unreachable in MVT::getVT.
|
||||||
|
+
|
||||||
|
+target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"
|
||||||
|
+target triple = "s390x-unknown-linux-gnu"
|
||||||
|
+
|
||||||
|
+declare { i64, i32 } @bar()
|
||||||
|
+
|
||||||
|
+define i8 @foo() {
|
||||||
|
+; CHECK-LABEL: 'foo'
|
||||||
|
+; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: br label %1
|
||||||
|
+; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %2 = call { i64, i32 } @bar()
|
||||||
|
+; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: store { i64, i32 } %2, ptr inttoptr (i64 16 to ptr), align 16
|
||||||
|
+; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: br label %1
|
||||||
|
+;
|
||||||
|
+ br label %1
|
||||||
|
+
|
||||||
|
+1: ; preds = %1, %0
|
||||||
|
+ %2 = call { i64, i32 } @bar()
|
||||||
|
+ store { i64, i32 } %2, ptr inttoptr (i64 16 to ptr), align 16
|
||||||
|
+ br label %1
|
||||||
|
+}
|
||||||
|
|
933
SPECS/llvm.spec
933
SPECS/llvm.spec
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user