| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: opt -S -passes=newgvn < %s | FileCheck %s |
| |
| define i64 @ptrtoaddr_same(ptr %p) { |
| ; CHECK-LABEL: define i64 @ptrtoaddr_same( |
| ; CHECK-SAME: ptr [[P:%.*]]) { |
| ; CHECK-NEXT: ret i64 0 |
| ; |
| %i = ptrtoaddr ptr %p to i64 |
| %j = ptrtoaddr ptr %p to i64 |
| %sub = sub i64 %i, %j |
| ret i64 %sub |
| } |
| |
| ; Note that unlike for ptrtoint, it's not possible for ptrtoaddr to differ |
| ; in result type for the same input. |
| define i64 @ptrtoaddr_different(ptr %p, ptr %p2) { |
| ; CHECK-LABEL: define i64 @ptrtoaddr_different( |
| ; CHECK-SAME: ptr [[P:%.*]], ptr [[P2:%.*]]) { |
| ; CHECK-NEXT: [[I:%.*]] = ptrtoaddr ptr [[P]] to i64 |
| ; CHECK-NEXT: [[J:%.*]] = ptrtoaddr ptr [[P2]] to i64 |
| ; CHECK-NEXT: [[SUB:%.*]] = sub i64 [[I]], [[J]] |
| ; CHECK-NEXT: ret i64 [[SUB]] |
| ; |
| %i = ptrtoaddr ptr %p to i64 |
| %j = ptrtoaddr ptr %p2 to i64 |
| %sub = sub i64 %i, %j |
| ret i64 %sub |
| } |