summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/getelementptr.ll
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-07-31 04:43:41 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-07-31 04:43:41 +0000
commita3a44f3fc3872a95f9a5d323e271e587765b9dea (patch)
tree2656dc0d4523c706d4bcdd007193bc5ce0746586 /llvm/test/Transforms/InstCombine/getelementptr.ll
parent163e7a73f1b5926133e80f40c8f6e79e06250376 (diff)
downloadbcm5719-llvm-a3a44f3fc3872a95f9a5d323e271e587765b9dea.tar.gz
bcm5719-llvm-a3a44f3fc3872a95f9a5d323e271e587765b9dea.zip
Add a small gep optimization I noticed was missing while reading some IL.
llvm-svn: 136585
Diffstat (limited to 'llvm/test/Transforms/InstCombine/getelementptr.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/getelementptr.ll20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/getelementptr.ll b/llvm/test/Transforms/InstCombine/getelementptr.ll
index 26c0e47f4b1..1c120ecbe9e 100644
--- a/llvm/test/Transforms/InstCombine/getelementptr.ll
+++ b/llvm/test/Transforms/InstCombine/getelementptr.ll
@@ -472,3 +472,23 @@ entry:
; CHECK: @pr10322_f1
; CHECK: %tmp2 = getelementptr inbounds %pr10322_t* %arrayidx8, i64 0, i32 0
}
+
+; Test that we combine the last two geps in this sequence, before we
+; would wait for gep1 and gep2 to be combined and never combine 2 and 3.
+%three_gep_t = type {i32}
+%three_gep_t2 = type {%three_gep_t}
+
+define void @three_gep_f(%three_gep_t2* %x) {
+ %gep1 = getelementptr %three_gep_t2* %x, i64 2
+ call void @three_gep_h(%three_gep_t2* %gep1)
+ %gep2 = getelementptr %three_gep_t2* %gep1, i64 0, i32 0
+ %gep3 = getelementptr %three_gep_t* %gep2, i64 0, i32 0
+ call void @three_gep_g(i32* %gep3)
+
+; CHECK: @three_gep_f
+; CHECK: %gep3 = getelementptr %three_gep_t2* %gep1, i64 0, i32 0, i32 0
+ ret void
+}
+
+declare void @three_gep_g(i32*)
+declare void @three_gep_h(%three_gep_t2*)
OpenPOWER on IntegriCloud