summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/getelementptr.ll
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2017-01-19 18:51:56 +0000
committerDavide Italiano <davide@freebsd.org>2017-01-19 18:51:56 +0000
commit2ef8c4e708f189e5bc80af63e9ecb36fa68acff2 (patch)
treedba202c45ca87440d09c15ea14a3ec24abd13a80 /llvm/test/Transforms/InstCombine/getelementptr.ll
parent93b558a486cc4ca2acedef5904f75746dc606139 (diff)
downloadbcm5719-llvm-2ef8c4e708f189e5bc80af63e9ecb36fa68acff2.tar.gz
bcm5719-llvm-2ef8c4e708f189e5bc80af63e9ecb36fa68acff2.zip
[InstCombine] Simplify gep (gep p, a), (b-a)
Patch by Andrea Canciani. Differential Revision: https://reviews.llvm.org/D27413 llvm-svn: 292506
Diffstat (limited to 'llvm/test/Transforms/InstCombine/getelementptr.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/getelementptr.ll27
1 files changed, 27 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/getelementptr.ll b/llvm/test/Transforms/InstCombine/getelementptr.ll
index 7ccbdf11fde..6e2ac92b93c 100644
--- a/llvm/test/Transforms/InstCombine/getelementptr.ll
+++ b/llvm/test/Transforms/InstCombine/getelementptr.ll
@@ -883,6 +883,33 @@ define %struct.C* @test46(%struct.C* %c1, %struct.C* %c2, i64 %N) {
; CHECK-NEXT: ret %struct.C* [[GEP]]
}
+define i32* @test47(i32* %I, i64 %C, i64 %D) {
+ %sub = sub i64 %D, %C
+ %A = getelementptr i32, i32* %I, i64 %C
+ %B = getelementptr i32, i32* %A, i64 %sub
+ ret i32* %B
+; CHECK-LABEL: @test47(
+; CHECK-NEXT: %B = getelementptr i32, i32* %I, i64 %D
+}
+
+define i32* @test48(i32* %I, i64 %C, i64 %D) {
+ %sub = sub i64 %D, %C
+ %A = getelementptr i32, i32* %I, i64 %sub
+ %B = getelementptr i32, i32* %A, i64 %C
+ ret i32* %B
+; CHECK-LABEL: @test48(
+; CHECK-NEXT: %B = getelementptr i32, i32* %I, i64 %D
+}
+
+define i32* @test49(i32* %I, i64 %C) {
+ %notC = xor i64 -1, %C
+ %A = getelementptr i32, i32* %I, i64 %C
+ %B = getelementptr i32, i32* %A, i64 %notC
+ ret i32* %B
+; CHECK-LABEL: @test49(
+; CHECK-NEXT: %B = getelementptr i32, i32* %I, i64 -1
+}
+
define i32 addrspace(1)* @ascast_0_gep(i32* %p) nounwind {
; CHECK-LABEL: @ascast_0_gep(
; CHECK-NOT: getelementptr
OpenPOWER on IntegriCloud