Skip to content

Commit f2de174

Browse files
committed
[InstSimplify] Add test for incorrect handling of wide pointers (NFC)
The intermediate integer type is too small to hold the full value.
1 parent 21fe3d1 commit f2de174

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

llvm/test/Transforms/InstSimplify/ptrtoint.ll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
22
; RUN: opt -S -passes=instsimplify < %s | FileCheck %s
33

4+
target datalayout = "p1:128:128:128"
5+
46
define i64 @ptrtoint_gep_sub(ptr %ptr, i64 %end.addr) {
57
; CHECK-LABEL: define i64 @ptrtoint_gep_sub(
68
; CHECK-SAME: ptr [[PTR:%.*]], i64 [[END_ADDR:%.*]]) {
@@ -136,3 +138,14 @@ define i128 @ptrtoint_gep_sub_wide_type(ptr %ptr, i128 %end.addr) {
136138
%end.addr2 = ptrtoint ptr %end to i128
137139
ret i128 %end.addr2
138140
}
141+
142+
; FIXME: This is a miscompile.
143+
define ptr addrspace(1) @inttoptr_of_ptrtoint_wide(ptr addrspace(1) %ptr) {
144+
; CHECK-LABEL: define ptr addrspace(1) @inttoptr_of_ptrtoint_wide(
145+
; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {
146+
; CHECK-NEXT: ret ptr addrspace(1) [[PTR]]
147+
;
148+
%int = ptrtoint ptr addrspace(1) %ptr to i64
149+
%ptr2 = inttoptr i64 %int to ptr addrspace(1)
150+
ret ptr addrspace(1) %ptr2
151+
}

0 commit comments

Comments
 (0)