blob: e51b42a859be0b51fcc8d7d6226e1705a390d1f8 [file] [log] [blame]
; 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
}