diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-07-31 04:43:41 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-07-31 04:43:41 +0000 |
commit | a3a44f3fc3872a95f9a5d323e271e587765b9dea (patch) | |
tree | 2656dc0d4523c706d4bcdd007193bc5ce0746586 /llvm/test/Transforms/InstCombine/getelementptr.ll | |
parent | 163e7a73f1b5926133e80f40c8f6e79e06250376 (diff) | |
download | bcm5719-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.ll | 20 |
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*) |