aboutsummaryrefslogtreecommitdiffstats
path: root/unmaintained/llvm3.9/rust-lang-llvm-pr47.patch
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2018-06-06 18:51:10 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2018-06-06 18:51:10 +0000
commita66224deaf95f31fb4bfc33f10316448bf550964 (patch)
tree7b3e47399732b12ebdca4aa772dddbacb5cb8fd6 /unmaintained/llvm3.9/rust-lang-llvm-pr47.patch
parent86a2486ce1034f3c3f325ff5e95a00446b30b489 (diff)
downloadaports-a66224deaf95f31fb4bfc33f10316448bf550964.tar.bz2
aports-a66224deaf95f31fb4bfc33f10316448bf550964.tar.xz
community/llvm3.9: move back from unmaintained
Diffstat (limited to 'unmaintained/llvm3.9/rust-lang-llvm-pr47.patch')
-rw-r--r--unmaintained/llvm3.9/rust-lang-llvm-pr47.patch272
1 files changed, 0 insertions, 272 deletions
diff --git a/unmaintained/llvm3.9/rust-lang-llvm-pr47.patch b/unmaintained/llvm3.9/rust-lang-llvm-pr47.patch
deleted file mode 100644
index 245706827d..0000000000
--- a/unmaintained/llvm3.9/rust-lang-llvm-pr47.patch
+++ /dev/null
@@ -1,272 +0,0 @@
-From ae32815f9281a5a8d48014e180901fcdb658285a Mon Sep 17 00:00:00 2001
-From: David Majnemer <david.majnemer@gmail.com>
-Date: Sun, 7 Aug 2016 07:58:00 +0000
-Subject: [rust-lang/llvm#47 1/4] [InstCombine] Infer inbounds on geps of
- allocas
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277950 91177308-0d34-0410-b5e6-96231b3b80d8
----
- lib/Transforms/InstCombine/InstructionCombining.cpp | 19 +++++++++++++++++++
- test/Transforms/InstCombine/getelementptr.ll | 6 +++---
- 2 files changed, 22 insertions(+), 3 deletions(-)
-
-diff --git a/lib/Transforms/InstCombine/InstructionCombining.cpp b/lib/Transforms/InstCombine/InstructionCombining.cpp
-index 377ccb9c37f7..31b5ad6ae8af 100644
---- a/lib/Transforms/InstCombine/InstructionCombining.cpp
-+++ b/lib/Transforms/InstCombine/InstructionCombining.cpp
-@@ -1898,6 +1898,25 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
- }
- }
-
-+ if (!GEP.isInBounds()) {
-+ unsigned PtrWidth =
-+ DL.getPointerSizeInBits(PtrOp->getType()->getPointerAddressSpace());
-+ APInt BasePtrOffset(PtrWidth, 0);
-+ Value *UnderlyingPtrOp =
-+ PtrOp->stripAndAccumulateInBoundsConstantOffsets(DL,
-+ BasePtrOffset);
-+ if (auto *AI = dyn_cast<AllocaInst>(UnderlyingPtrOp)) {
-+ if (GEP.accumulateConstantOffset(DL, BasePtrOffset) &&
-+ BasePtrOffset.isNonNegative()) {
-+ APInt AllocSize(PtrWidth, DL.getTypeAllocSize(AI->getAllocatedType()));
-+ if (BasePtrOffset.ule(AllocSize)) {
-+ return GetElementPtrInst::CreateInBounds(
-+ PtrOp, makeArrayRef(Ops).slice(1), GEP.getName());
-+ }
-+ }
-+ }
-+ }
-+
- return nullptr;
- }
-
-diff --git a/test/Transforms/InstCombine/getelementptr.ll b/test/Transforms/InstCombine/getelementptr.ll
-index 7446734e210c..14abd84fd18e 100644
---- a/test/Transforms/InstCombine/getelementptr.ll
-+++ b/test/Transforms/InstCombine/getelementptr.ll
-@@ -366,7 +366,7 @@ define i32 @test21() {
- %rval = load i32, i32* %pbobel
- ret i32 %rval
- ; CHECK-LABEL: @test21(
--; CHECK: getelementptr %intstruct, %intstruct* %pbob1, i64 0, i32 0
-+; CHECK: getelementptr inbounds %intstruct, %intstruct* %pbob1, i64 0, i32 0
- }
-
-
-@@ -540,8 +540,8 @@ define i8* @test32(i8* %v) {
- %G = load i8*, i8** %F
- ret i8* %G
- ; CHECK-LABEL: @test32(
--; CHECK: %D = getelementptr [4 x i8*], [4 x i8*]* %A, i64 0, i64 1
--; CHECK: %F = getelementptr [4 x i8*], [4 x i8*]* %A, i64 0, i64 2
-+; CHECK: %D = getelementptr inbounds [4 x i8*], [4 x i8*]* %A, i64 0, i64 1
-+; CHECK: %F = getelementptr inbounds [4 x i8*], [4 x i8*]* %A, i64 0, i64 2
- }
-
- ; PR3290
---
-2.7.4
-
-From d31c987130ff1bf9cea9a287195ecceda91c37d1 Mon Sep 17 00:00:00 2001
-From: David Majnemer <david.majnemer@gmail.com>
-Date: Sun, 7 Aug 2016 07:58:10 +0000
-Subject: [rust-lang/llvm#47 2/4] [InstSimplify] Try hard to simplify pointer
- comparisons
-
-Simplify ptrtoint comparisons involving operands with different source
-types.
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277951 91177308-0d34-0410-b5e6-96231b3b80d8
----
- lib/Analysis/InstructionSimplify.cpp | 10 ++++++++++
- test/Transforms/InstSimplify/compare.ll | 13 +++++++++++++
- 2 files changed, 23 insertions(+)
-
-diff --git a/lib/Analysis/InstructionSimplify.cpp b/lib/Analysis/InstructionSimplify.cpp
-index 7c6edbfca270..8b70d89d62cb 100644
---- a/lib/Analysis/InstructionSimplify.cpp
-+++ b/lib/Analysis/InstructionSimplify.cpp
-@@ -3092,6 +3092,16 @@ static Value *SimplifyICmpInst(unsigned Predicate, Value *LHS, Value *RHS,
- if (LHS->getType()->isPointerTy())
- if (auto *C = computePointerICmp(Q.DL, Q.TLI, Q.DT, Pred, Q.CxtI, LHS, RHS))
- return C;
-+ if (auto *CLHS = dyn_cast<PtrToIntOperator>(LHS))
-+ if (auto *CRHS = dyn_cast<PtrToIntOperator>(RHS))
-+ if (Q.DL.getTypeSizeInBits(CLHS->getPointerOperandType()) ==
-+ Q.DL.getTypeSizeInBits(CLHS->getType()) &&
-+ Q.DL.getTypeSizeInBits(CRHS->getPointerOperandType()) ==
-+ Q.DL.getTypeSizeInBits(CRHS->getType()))
-+ if (auto *C = computePointerICmp(Q.DL, Q.TLI, Q.DT, Pred, Q.CxtI,
-+ CLHS->getPointerOperand(),
-+ CRHS->getPointerOperand()))
-+ return C;
-
- if (GetElementPtrInst *GLHS = dyn_cast<GetElementPtrInst>(LHS)) {
- if (GEPOperator *GRHS = dyn_cast<GEPOperator>(RHS)) {
-diff --git a/test/Transforms/InstSimplify/compare.ll b/test/Transforms/InstSimplify/compare.ll
-index 9d6fd74ae56f..3e7316ec6b48 100644
---- a/test/Transforms/InstSimplify/compare.ll
-+++ b/test/Transforms/InstSimplify/compare.ll
-@@ -205,6 +205,19 @@ define i1 @gep16(i8* %ptr, i32 %a) {
- ; CHECK-NEXT: ret i1 false
- }
-
-+define i1 @gep17() {
-+; CHECK-LABEL: @gep17(
-+ %alloca = alloca i32, align 4
-+ %bc = bitcast i32* %alloca to [4 x i8]*
-+ %gep1 = getelementptr inbounds i32, i32* %alloca, i32 1
-+ %pti1 = ptrtoint i32* %gep1 to i32
-+ %gep2 = getelementptr inbounds [4 x i8], [4 x i8]* %bc, i32 0, i32 1
-+ %pti2 = ptrtoint i8* %gep2 to i32
-+ %cmp = icmp ugt i32 %pti1, %pti2
-+ ret i1 %cmp
-+; CHECK-NEXT: ret i1 true
-+}
-+
- define i1 @zext(i32 %x) {
- ; CHECK-LABEL: @zext(
- %e1 = zext i32 %x to i64
---
-2.7.4
-
-From bd3e05cb1f5293635edff14fcf23cfc73985c977 Mon Sep 17 00:00:00 2001
-From: David Majnemer <david.majnemer@gmail.com>
-Date: Sun, 7 Aug 2016 07:58:12 +0000
-Subject: [rust-lang/llvm#47 3/4] [InstSimplify] Fold gep (gep V, C), (sub 0,
- V) to C
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277952 91177308-0d34-0410-b5e6-96231b3b80d8
----
- lib/Analysis/InstructionSimplify.cpp | 20 ++++++++++++++++++++
- test/Transforms/InstSimplify/compare.ll | 13 +++++++++++++
- 2 files changed, 33 insertions(+)
-
-diff --git a/lib/Analysis/InstructionSimplify.cpp b/lib/Analysis/InstructionSimplify.cpp
-index 8b70d89d62cb..9d2a47957125 100644
---- a/lib/Analysis/InstructionSimplify.cpp
-+++ b/lib/Analysis/InstructionSimplify.cpp
-@@ -3597,6 +3597,26 @@ static Value *SimplifyGEPInst(Type *SrcTy, ArrayRef<Value *> Ops,
- }
- }
-
-+ // gep (gep V, C), (sub 0, V) -> C
-+ if (Q.DL.getTypeAllocSize(LastType) == 1 &&
-+ all_of(Ops.slice(1).drop_back(1),
-+ [](Value *Idx) { return match(Idx, m_Zero()); })) {
-+ unsigned PtrWidth =
-+ Q.DL.getPointerSizeInBits(Ops[0]->getType()->getPointerAddressSpace());
-+ if (Q.DL.getTypeSizeInBits(Ops.back()->getType()) == PtrWidth) {
-+ APInt BasePtrOffset(PtrWidth, 0);
-+ Value *StrippedBasePtr =
-+ Ops[0]->stripAndAccumulateInBoundsConstantOffsets(Q.DL,
-+ BasePtrOffset);
-+
-+ if (match(Ops.back(),
-+ m_Sub(m_Zero(), m_PtrToInt(m_Specific(StrippedBasePtr))))) {
-+ auto *CI = ConstantInt::get(GEPTy->getContext(), BasePtrOffset);
-+ return ConstantExpr::getIntToPtr(CI, GEPTy);
-+ }
-+ }
-+ }
-+
- // Check to see if this is constant foldable.
- for (unsigned i = 0, e = Ops.size(); i != e; ++i)
- if (!isa<Constant>(Ops[i]))
-diff --git a/test/Transforms/InstSimplify/compare.ll b/test/Transforms/InstSimplify/compare.ll
-index 3e7316ec6b48..addb63c57222 100644
---- a/test/Transforms/InstSimplify/compare.ll
-+++ b/test/Transforms/InstSimplify/compare.ll
-@@ -218,6 +218,19 @@ define i1 @gep17() {
- ; CHECK-NEXT: ret i1 true
- }
-
-+define i32 @gep18() {
-+; CHECK-LABEL: @gep18(
-+ %alloca = alloca i32, align 4 ; alloca + 0
-+ %gep = getelementptr inbounds i32, i32* %alloca, i32 1 ; alloca + 4
-+ %bc = bitcast i32* %gep to [4 x i8]* ; alloca + 4
-+ %pti = ptrtoint i32* %alloca to i32 ; alloca
-+ %sub = sub i32 0, %pti ; -alloca
-+ %add = getelementptr [4 x i8], [4 x i8]* %bc, i32 0, i32 %sub ; alloca + 4 - alloca == 4
-+ %add_to_int = ptrtoint i8* %add to i32 ; 4
-+ ret i32 %add_to_int ; 4
-+; CHECK-NEXT: ret i32 4
-+}
-+
- define i1 @zext(i32 %x) {
- ; CHECK-LABEL: @zext(
- %e1 = zext i32 %x to i64
---
-2.7.4
-
-From c3eb3c7608f439231d0c1340af6b720f113b4bf4 Mon Sep 17 00:00:00 2001
-From: David Majnemer <david.majnemer@gmail.com>
-Date: Tue, 16 Aug 2016 06:13:46 +0000
-Subject: [rust-lang/llvm#47 4/4] [InstSimplify] Fold gep (gep V, C), (xor V,
- -1) to C-1
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278779 91177308-0d34-0410-b5e6-96231b3b80d8
----
- lib/Analysis/InstructionSimplify.cpp | 8 +++++++-
- test/Transforms/InstSimplify/compare.ll | 13 -------------
- 2 files changed, 7 insertions(+), 14 deletions(-)
-
-diff --git a/lib/Analysis/InstructionSimplify.cpp b/lib/Analysis/InstructionSimplify.cpp
-index 9d2a47957125..f7a435d1ad46 100644
---- a/lib/Analysis/InstructionSimplify.cpp
-+++ b/lib/Analysis/InstructionSimplify.cpp
-@@ -3597,7 +3597,6 @@ static Value *SimplifyGEPInst(Type *SrcTy, ArrayRef<Value *> Ops,
- }
- }
-
-- // gep (gep V, C), (sub 0, V) -> C
- if (Q.DL.getTypeAllocSize(LastType) == 1 &&
- all_of(Ops.slice(1).drop_back(1),
- [](Value *Idx) { return match(Idx, m_Zero()); })) {
-@@ -3609,11 +3608,18 @@ static Value *SimplifyGEPInst(Type *SrcTy, ArrayRef<Value *> Ops,
- Ops[0]->stripAndAccumulateInBoundsConstantOffsets(Q.DL,
- BasePtrOffset);
-
-+ // gep (gep V, C), (sub 0, V) -> C
- if (match(Ops.back(),
- m_Sub(m_Zero(), m_PtrToInt(m_Specific(StrippedBasePtr))))) {
- auto *CI = ConstantInt::get(GEPTy->getContext(), BasePtrOffset);
- return ConstantExpr::getIntToPtr(CI, GEPTy);
- }
-+ // gep (gep V, C), (xor V, -1) -> C-1
-+ if (match(Ops.back(),
-+ m_Xor(m_PtrToInt(m_Specific(StrippedBasePtr)), m_AllOnes()))) {
-+ auto *CI = ConstantInt::get(GEPTy->getContext(), BasePtrOffset - 1);
-+ return ConstantExpr::getIntToPtr(CI, GEPTy);
-+ }
- }
- }
-
-diff --git a/test/Transforms/InstSimplify/compare.ll b/test/Transforms/InstSimplify/compare.ll
-index addb63c57222..3e7316ec6b48 100644
---- a/test/Transforms/InstSimplify/compare.ll
-+++ b/test/Transforms/InstSimplify/compare.ll
-@@ -218,19 +218,6 @@ define i1 @gep17() {
- ; CHECK-NEXT: ret i1 true
- }
-
--define i32 @gep18() {
--; CHECK-LABEL: @gep18(
-- %alloca = alloca i32, align 4 ; alloca + 0
-- %gep = getelementptr inbounds i32, i32* %alloca, i32 1 ; alloca + 4
-- %bc = bitcast i32* %gep to [4 x i8]* ; alloca + 4
-- %pti = ptrtoint i32* %alloca to i32 ; alloca
-- %sub = sub i32 0, %pti ; -alloca
-- %add = getelementptr [4 x i8], [4 x i8]* %bc, i32 0, i32 %sub ; alloca + 4 - alloca == 4
-- %add_to_int = ptrtoint i8* %add to i32 ; 4
-- ret i32 %add_to_int ; 4
--; CHECK-NEXT: ret i32 4
--}
--
- define i1 @zext(i32 %x) {
- ; CHECK-LABEL: @zext(
- %e1 = zext i32 %x to i64
---
-2.7.4
-