diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-01-01 22:29:12 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-01-01 22:29:12 +0000 |
| commit | 4394f71752803d4195e62240ff952c911d91c38a (patch) | |
| tree | a980e801a6e01e55af9af8e38a0ce3dcf9afdc1e /llvm/test/Transforms/InstCombine/sub.ll | |
| parent | 9d4c5414bb8e7ce41dda02a52e30fc3e59dfd0f7 (diff) | |
| download | bcm5719-llvm-4394f71752803d4195e62240ff952c911d91c38a.tar.gz bcm5719-llvm-4394f71752803d4195e62240ff952c911d91c38a.zip | |
teach instcombine to optimize pointer difference idioms involving constant
expressions. This is a step towards comment #4 in PR3351.
llvm-svn: 92401
Diffstat (limited to 'llvm/test/Transforms/InstCombine/sub.ll')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/sub.ll | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/sub.ll b/llvm/test/Transforms/InstCombine/sub.ll index ba28910f4c0..85ee64ec43f 100644 --- a/llvm/test/Transforms/InstCombine/sub.ll +++ b/llvm/test/Transforms/InstCombine/sub.ll @@ -248,3 +248,15 @@ define i64 @test24a(i8* %P, i64 %A){ ; CHECK-NEXT: ret i64 } +@Arr = external global [42 x i16] + +define i64 @test24b(i8* %P, i64 %A){ + %B = getelementptr inbounds [42 x i16]* @Arr, i64 0, i64 %A + %C = ptrtoint i16* %B to i64 + %G = sub i64 %C, ptrtoint ([42 x i16]* @Arr to i64) + ret i64 %G +; CHECK: @test24b +; CHECK-NEXT: shl i64 %A, 1 +; CHECK-NEXT: ret i64 +} + |

