| ; RUN: opt -instsimplify -S < %s | FileCheck %s |
| |
| define i1 @bitcast() { |
| ; CHECK-LABEL: @bitcast( |
| %a = alloca i32 |
| %b = alloca i64 |
| %x = bitcast i32* %a to i8* |
| %z = bitcast i64* %b to i8* |
| %y = call i8* @func1(i8* %z) |
| %cmp = icmp eq i8* %x, %y |
| ret i1 %cmp |
| ; CHECK-NEXT: ret i1 false |
| } |
| |
| %gept = type { i32, i32 } |
| |
| define i1 @gep3() { |
| ; CHECK-LABEL: @gep3( |
| %x = alloca %gept, align 8 |
| %a = getelementptr %gept, %gept* %x, i64 0, i32 0 |
| %y = call %gept* @func2(%gept* %x) |
| %b = getelementptr %gept, %gept* %y, i64 0, i32 1 |
| %equal = icmp eq i32* %a, %b |
| ret i1 %equal |
| ; CHECK-NEXT: ret i1 false |
| } |
| |
| declare i8* @func1(i8* returned) nounwind readnone |
| declare %gept* @func2(%gept* returned) nounwind readnone |
| |