Revert the addition of hasNoPointerOverflow to GEPOperator.
[oota-llvm.git] / test / Transforms / InstCombine / cast_ptr.ll
1 ; Tests to make sure elimination of casts is working correctly
2 ; RUN: llvm-as < %s | opt -instcombine | llvm-dis | FileCheck %s
3
4 target datalayout = "p:32:32"
5
6 ; This shouldn't convert to getelementptr because the relationship
7 ; between the arithmetic and the layout of allocated memory is
8 ; entirely unknown.
9 ; CHECK: @test1
10 ; CHECK: ptrtoint
11 ; CHECK: add
12 ; CHECK: inttoptr
13 define i8* @test1(i8* %t) {
14         %tmpc = ptrtoint i8* %t to i32          ; <i32> [#uses=1]
15         %tmpa = add i32 %tmpc, 32               ; <i32> [#uses=1]
16         %tv = inttoptr i32 %tmpa to i8*         ; <i8*> [#uses=1]
17         ret i8* %tv
18 }
19
20 ; These casts should be folded away.
21 ; CHECK: @test2
22 ; CHECK: icmp eq i8* %a, %b
23 define i1 @test2(i8* %a, i8* %b) {
24         %tmpa = ptrtoint i8* %a to i32          ; <i32> [#uses=1]
25         %tmpb = ptrtoint i8* %b to i32          ; <i32> [#uses=1]
26         %r = icmp eq i32 %tmpa, %tmpb           ; <i1> [#uses=1]
27         ret i1 %r
28 }
29