[arch-commits] Commit in llvm/trunk (2 files)
Evangelos Foutras
foutrelis at gemini.archlinux.org
Fri Nov 12 10:14:01 UTC 2021
Date: Friday, November 12, 2021 @ 10:14:01
Author: foutrelis
Revision: 427924
upgpkg: llvm 13.0.0-3: re-add GEP element type resolution
This is a temporary workaround until intel-graphics-compiler is fixed.
https://github.com/intel/intel-graphics-compiler/issues/204
Added:
llvm/trunk/don-t-accept-nullptr-as-GEP-element-type.patch
Modified:
llvm/trunk/PKGBUILD
------------------------------------------------+
PKGBUILD | 7 ++
don-t-accept-nullptr-as-GEP-element-type.patch | 63 +++++++++++++++++++++++
2 files changed, 69 insertions(+), 1 deletion(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2021-11-12 10:00:39 UTC (rev 427923)
+++ PKGBUILD 2021-11-12 10:14:01 UTC (rev 427924)
@@ -3,7 +3,7 @@
pkgname=('llvm' 'llvm-libs' 'llvm-ocaml')
pkgver=13.0.0
-pkgrel=2
+pkgrel=3
_ocaml_ver=4.12.0
arch=('x86_64')
url="https://llvm.org/"
@@ -15,11 +15,13 @@
options=('staticlibs')
_source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver
source=($_source_base/$pkgname-$pkgver.src.tar.xz{,.sig}
+ don-t-accept-nullptr-as-GEP-element-type.patch
no-strict-aliasing-DwarfCompileUnit.patch
disable-bswap-for-spir.patch
llvm-config.h)
sha256sums=('408d11708643ea826f519ff79761fcdfc12d641a2510229eec459e72f8163020'
'SKIP'
+ 'a7e902a7612d0fdabe436a917468b043cc296bc89d8954bfc3126f737beb9ac4'
'd1eff24508e35aae6c26a943dbaa3ef5acb60a145b008fd1ef9ac6f6c4faa662'
'af163392fbc19d65d11ab4b1510a2eae39b417d6228023b3ba5395b138bb41f5'
'597dc5968c695bbdbb0eac9e8eb5117fcd2773bc91edf5ec103ecffffab8bc48')
@@ -30,6 +32,9 @@
cd "$srcdir/llvm-$pkgver.src"
mkdir build
+ # https://github.com/intel/intel-graphics-compiler/issues/204
+ patch -Rp2 -i ../don-t-accept-nullptr-as-GEP-element-type.patch
+
# Work around intermittent 'clang -O -g' crashes
# https://bugs.llvm.org/show_bug.cgi?id=50611#c3
patch -Np2 -i ../no-strict-aliasing-DwarfCompileUnit.patch
Added: don-t-accept-nullptr-as-GEP-element-type.patch
===================================================================
--- don-t-accept-nullptr-as-GEP-element-type.patch (rev 0)
+++ don-t-accept-nullptr-as-GEP-element-type.patch 2021-11-12 10:14:01 UTC (rev 427924)
@@ -0,0 +1,63 @@
+From b00cff56cfb15cbfa74cb512c9cee1c402cce55b Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikita.ppv at gmail.com>
+Date: Thu, 8 Jul 2021 20:56:05 +0200
+Subject: [PATCH] Reapply [IR] Don't accept nullptr as GEP element type
+
+Reapply after fixing another occurrence in lldb that was relying
+on this in the preceding commit.
+
+-----
+
+GetElementPtrInst::Create() (and IRBuilder methods based on it)
+currently accept nullptr as the element type, and will fetch the
+element type from the pointer in that case. Remove this fallback,
+as it is incompatible with opaque pointers. I've removed a handful
+of leftover calls using this behavior as a preliminary step.
+
+Out-of-tree code affected by this change should either pass a proper
+type, or can temporarily explicitly call getPointerElementType(),
+if the newly added assertion is encountered.
+
+Differential Revision: https://reviews.llvm.org/D105653
+---
+ llvm/include/llvm/IR/Instructions.h | 20 ++++++--------------
+ 1 file changed, 6 insertions(+), 14 deletions(-)
+
+diff --git a/llvm/include/llvm/IR/Instructions.h b/llvm/include/llvm/IR/Instructions.h
+index a5cebf0a4626..0c43a56daa33 100644
+--- a/llvm/include/llvm/IR/Instructions.h
++++ b/llvm/include/llvm/IR/Instructions.h
+@@ -956,13 +956,9 @@ public:
+ const Twine &NameStr = "",
+ Instruction *InsertBefore = nullptr) {
+ unsigned Values = 1 + unsigned(IdxList.size());
+- if (!PointeeType) {
+- PointeeType =
+- cast<PointerType>(Ptr->getType()->getScalarType())->getElementType();
+- } else {
+- assert(cast<PointerType>(Ptr->getType()->getScalarType())
+- ->isOpaqueOrPointeeTypeMatches(PointeeType));
+- }
++ assert(PointeeType && "Must specify element type");
++ assert(cast<PointerType>(Ptr->getType()->getScalarType())
++ ->isOpaqueOrPointeeTypeMatches(PointeeType));
+ return new (Values) GetElementPtrInst(PointeeType, Ptr, IdxList, Values,
+ NameStr, InsertBefore);
+ }
+@@ -972,13 +968,9 @@ public:
+ const Twine &NameStr,
+ BasicBlock *InsertAtEnd) {
+ unsigned Values = 1 + unsigned(IdxList.size());
+- if (!PointeeType) {
+- PointeeType =
+- cast<PointerType>(Ptr->getType()->getScalarType())->getElementType();
+- } else {
+- assert(cast<PointerType>(Ptr->getType()->getScalarType())
+- ->isOpaqueOrPointeeTypeMatches(PointeeType));
+- }
++ assert(PointeeType && "Must specify element type");
++ assert(cast<PointerType>(Ptr->getType()->getScalarType())
++ ->isOpaqueOrPointeeTypeMatches(PointeeType));
+ return new (Values) GetElementPtrInst(PointeeType, Ptr, IdxList, Values,
+ NameStr, InsertAtEnd);
+ }
More information about the arch-commits
mailing list