Skip to content
Snippets Groups Projects
Verified Commit 6b93a26b authored by Anna Wilcox's avatar Anna Wilcox :fox:
Browse files

user/llvm8: bump to 8.0.0

parent 187dc661
No related branches found
No related tags found
No related merge requests found
Index: trunk/lib/Target/PowerPC/PPCISelLowering.cpp
===================================================================
--- trunk/lib/Target/PowerPC/PPCISelLowering.cpp
+++ trunk/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -3511,9 +3511,14 @@
// Argument stored in memory.
assert(VA.isMemLoc());
+ // Get the extended size of the argument type in stack
unsigned ArgSize = VA.getLocVT().getStoreSize();
- int FI = MFI.CreateFixedObject(ArgSize, VA.getLocMemOffset(),
- isImmutable);
+ // Get the actual size of the argument type
+ unsigned ObjSize = VA.getValVT().getStoreSize();
+ unsigned ArgOffset = VA.getLocMemOffset();
+ // Stack objects in PPC32 are right justified.
+ ArgOffset += ArgSize - ObjSize;
+ int FI = MFI.CreateFixedObject(ArgSize, ArgOffset, isImmutable);
// Create load nodes to retrieve arguments from the stack.
SDValue FIN = DAG.getFrameIndex(FI, PtrVT);
@@ -5468,10 +5473,15 @@
Arg = PtrOff;
}
- if (VA.isRegLoc()) {
- if (Arg.getValueType() == MVT::i1)
- Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg);
+ // When useCRBits() is true, there can be i1 arguments.
+ // It is because getRegisterType(MVT::i1) => MVT::i1,
+ // and for other integer types getRegisterType() => MVT::i32.
+ // Extend i1 and ensure callee will get i32.
+ if (Arg.getValueType() == MVT::i1)
+ Arg = DAG.getNode(Flags.isSExt() ? ISD::SIGN_EXTEND : ISD::ZERO_EXTEND,
+ dl, MVT::i32, Arg);
+ if (VA.isRegLoc()) {
seenFloatArg |= VA.getLocVT().isFloatingPoint();
// Put argument in a physical register.
RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
Index: trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
===================================================================
--- trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
+++ trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
@@ -0,0 +1,24 @@
+; RUN: llc -verify-machineinstrs < %s -mcpu=ppc32 -mattr=+crbits | FileCheck %s
+target triple = "powerpc-unknown-linux-gnu"
+
+define void @check_callee(
+ i32, i32, i32, i32,
+ i32, i32, i32, i32,
+ i1 zeroext %s1
+) {
+ call void @check_caller(
+ i32 9, i32 9, i32 9, i32 9,
+ i32 9, i32 9, i32 9, i32 9,
+ i1 zeroext %s1)
+ ret void
+}
+
+; CHECK-LABEL: @check_callee
+; CHECK: lbz {{[0-9]+}}, 27(1)
+; CHECK: stw {{[0-9]+}}, 8(1)
+
+declare void @check_caller(
+ i32, i32, i32, i32,
+ i32, i32, i32, i32,
+ i1 zeroext
+)
......@@ -3,7 +3,7 @@
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
_pkgname=llvm
pkgver=7.0.1
pkgver=8.0.0
_majorver=${pkgver%%.*}
pkgname=$_pkgname$_majorver
pkgrel=0
......@@ -24,7 +24,6 @@ source="https://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz
musl-ppc64-elfv2.patch
more-secure-plt.patch
even-more-secure-plt.patch
ppc32-calling-convention.patch
python3-test.patch
"
builddir="$srcdir/$_pkgname-$pkgver.src"
......@@ -114,6 +113,9 @@ build() {
check() {
cd "$builddir"/build
# appears to be an issue on musl and glibc, but only fails on musl:
# https://github.com/NixOS/nixpkgs/blob/bb7e9e46/pkgs/development/compilers/llvm/8/llvm.nix#L74
rm "$builddir"/test/CodeGen/AArch64/wineh4.mir
# FIXME: Few tests fail on s390x, ignore it for now. See build log
# https://gist.github.com/jirutka/6edc951ad5b8002cf1780546cf661edc
case "$CARCH" in
......@@ -241,12 +243,11 @@ _mv() {
mv $@
}
sha512sums="ac43a3cb71a53deb55e3693653847cf20bf6f5d9056f224e6956c96d63bc59ebee9404f088eec9cabe65337b4607a905ef931354b373cf64e0004c6905a6b5df llvm-7.0.1.src.tar.xz
sha512sums="1602343b451b964f5d8c2d6b0654d89384c80d45883498c5f0e2f4196168dd4a1ed2a4dadb752076020243df42ffe46cb31d82ffc145d8e5874163cbb9686a1f llvm-8.0.0.src.tar.xz
f84cd65d7042e89826ba6e8d48c4c302bf4980da369d7f19a55f217e51c00ca8ed178d453df3a3cee76598a7cecb94aed0775a6d24fe73266f82749913fc3e71 llvm-fix-build-with-musl-libc.patch
49c47f125014b60d0ea7870f981a2c1708ad705793f89287ed846ee881a837a4dc0170bf467e03f2ef56177473128945287749ac80dc2d13cfabcf8b929ba58a disable-FileSystemTest.CreateDir-perms-assert.patch
caeec8e4dbd92f5f74940780b69075f3879a267a8623822cbdc193fd14706eb089071e3a5a20d60cc2eca59e4c5b2a61d29827a2f3362ee7c5f74f11d9ace200 disable-dlclose-test.patch
e5ddbc4b6c4928e79846dc3c022eb7928aaa8fed40515c78f5f03b8ab8264f34f1eb8aa8bfc0f436450932f4917e54ad261603032092ea271d9590f11a37cf1e musl-ppc64-elfv2.patch
dcd34b81c2f2843cd05b2e3b88e268045a2ec6ed8677630fc8904f38b2131cbc0ba37dde461e28b1c301d5e95b634b2e225797f8a5585c0cabc69e3b7e78de85 more-secure-plt.patch
957516510439be661ad04e061e9616da8a271a5621603238cde5b4782bd2465367eaaa5ade628d163c8d9e70b8b0495687669f4648bd031ac6e5a1582d2e75a4 more-secure-plt.patch
deb71762721ebc73bfdf23143b582f40c70eddcef3e337ed14499e8e336bee2906292d38d64fe98fa633430c1bcb66cf6a2e067258c8fbe6e931f99f6d10a6f7 even-more-secure-plt.patch
c3f596a1578a07ce0ee40c4e2576fe05ca6ca0c1b4f94b1f74c55cb09603afe7c846db9294fe28d83ca48633086bad422218e6d06e0d92173143fb298e06fb38 ppc32-calling-convention.patch
53cc0d13dd871e9b775bb4e7567de4f9a97d91b8246cd7ce74607fd88d6e3e2ab9455f5b4195bc7f9dbdedbc77d659d43e98ec0b7cd78cd395aaea6919510287 python3-test.patch"
......@@ -16,13 +16,13 @@ index c583fba8cab..6a9eedf89c5 100644
--- a/lib/Target/PowerPC/PPCTargetMachine.cpp
+++ b/lib/Target/PowerPC/PPCTargetMachine.cpp
@@ -222,6 +222,10 @@ static Reloc::Model getEffectiveRelocModel(const Triple &TT,
if (TT.getArch() == Triple::ppc64 || TT.getArch() == Triple::ppc64le)
if (TT.getArch() == Triple::ppc64)
return Reloc::PIC_;
+ // musl needs SecurePlt, which depends on PIC.
+ if (TT.getEnvironment() == Triple::Musl)
+ return Reloc::PIC_;
+
// 32-bit is static by default.
// Rest are static by default.
return Reloc::Static;
}
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment