Skip to content

Commit 2e7afb1

Browse files
committed
[InstCombine] Move ptrtoaddr tests to InstSimplify (NFC)
All the existing tests test code either in ConstantFolding or InstSimplify, so move them to use -passes=instsimplify instead of -passes=instcombine. This makes sure we keep InstSimplify coverage even if there are subsuming InstCombine folds. This requires writing some of the constant folding tests in a different way, as InstSimplify does not try to re-fold already existing constant expressions.
1 parent 74d77dc commit 2e7afb1

File tree

1 file changed

+38
-16
lines changed

1 file changed

+38
-16
lines changed

llvm/test/Transforms/InstCombine/ptrtoaddr.ll renamed to llvm/test/Transforms/InstSimplify/ptrtoaddr.ll

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

44
; The ptrtoaddr folds are also valid for pointers that have external state.
55
target datalayout = "pe1:64:64:64:32"
@@ -34,77 +34,95 @@ define i32 @ptrtoaddr_inttoptr() {
3434
; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr() {
3535
; CHECK-NEXT: ret i32 -1
3636
;
37-
ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i32 -1 to ptr addrspace(1)) to i32)
37+
%toptr = inttoptr i32 -1 to ptr addrspace(1)
38+
%toaddr = ptrtoaddr ptr addrspace(1) %toptr to i32
39+
ret i32 %toaddr
3840
}
3941

4042
define i32 @ptrtoaddr_inttoptr_diff_size1() {
4143
; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr_diff_size1() {
4244
; CHECK-NEXT: ret i32 -1
4345
;
44-
ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i64 -1 to ptr addrspace(1)) to i32)
46+
%toptr = inttoptr i64 -1 to ptr addrspace(1)
47+
%toaddr = ptrtoaddr ptr addrspace(1) %toptr to i32
48+
ret i32 %toaddr
4549
}
4650

4751
define i32 @ptrtoaddr_inttoptr_diff_size2() {
4852
; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr_diff_size2() {
4953
; CHECK-NEXT: ret i32 65535
5054
;
51-
ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i16 -1 to ptr addrspace(1)) to i32)
55+
%toptr = inttoptr i16 -1 to ptr addrspace(1)
56+
%toaddr = ptrtoaddr ptr addrspace(1) %toptr to i32
57+
ret i32 %toaddr
5258
}
5359

5460
define i64 @ptrtoaddr_inttoptr_noas1() {
5561
; CHECK-LABEL: define i64 @ptrtoaddr_inttoptr_noas1() {
5662
; CHECK-NEXT: ret i64 1
5763
;
58-
ret i64 ptrtoaddr (ptr getelementptr (i8, ptr null, i64 1) to i64)
64+
%toptr = getelementptr i8, ptr null, i64 1
65+
%toaddr = ptrtoaddr ptr %toptr to i64
66+
ret i64 %toaddr
5967
}
6068

6169
define i64 @ptr2addr2_inttoptr_noas2() {
6270
; CHECK-LABEL: define i64 @ptr2addr2_inttoptr_noas2() {
6371
; CHECK-NEXT: ret i64 123
6472
;
65-
ret i64 ptrtoaddr (ptr inttoptr (i64 123 to ptr) to i64)
73+
%toptr = inttoptr i64 123 to ptr
74+
%toaddr = ptrtoaddr ptr %toptr to i64
75+
ret i64 %toaddr
6676
}
6777

6878
define i64 @ptrtoaddr_inttoptr_noas_diff_size1() {
6979
; CHECK-LABEL: define i64 @ptrtoaddr_inttoptr_noas_diff_size1() {
7080
; CHECK-NEXT: ret i64 4294967295
7181
;
72-
ret i64 ptrtoaddr (ptr inttoptr (i32 -1 to ptr) to i64)
82+
%toptr = inttoptr i32 -1 to ptr
83+
%toaddr = ptrtoaddr ptr %toptr to i64
84+
ret i64 %toaddr
7385
}
7486

7587
define i64 @ptrtoaddr_inttoptr_noas_diff_size2() {
7688
; CHECK-LABEL: define i64 @ptrtoaddr_inttoptr_noas_diff_size2() {
7789
; CHECK-NEXT: ret i64 -1
7890
;
79-
ret i64 ptrtoaddr (ptr inttoptr (i128 -1 to ptr) to i64)
91+
%toptr = inttoptr i128 -1 to ptr
92+
%toaddr = ptrtoaddr ptr %toptr to i64
93+
ret i64 %toaddr
8094
}
8195

8296
define i64 @ptrtoaddr_gep_null() {
8397
; CHECK-LABEL: define i64 @ptrtoaddr_gep_null() {
8498
; CHECK-NEXT: ret i64 42
8599
;
86-
ret i64 ptrtoaddr (ptr getelementptr (i8, ptr null, i64 42) to i64)
100+
%toaddr = ptrtoaddr ptr getelementptr (i8, ptr null, i64 42) to i64
101+
ret i64 %toaddr
87102
}
88103

89104
define i32 @ptrtoaddr_gep_null_addrsize() {
90105
; CHECK-LABEL: define i32 @ptrtoaddr_gep_null_addrsize() {
91106
; CHECK-NEXT: ret i32 42
92107
;
93-
ret i32 ptrtoaddr (ptr addrspace(1) getelementptr (i8, ptr addrspace(1) null, i32 42) to i32)
108+
%toaddr = ptrtoaddr ptr addrspace(1) getelementptr (i8, ptr addrspace(1) null, i32 42) to i32
109+
ret i32 %toaddr
94110
}
95111

96112
define i64 @ptrtoaddr_gep_sub() {
97113
; CHECK-LABEL: define i64 @ptrtoaddr_gep_sub() {
98114
; CHECK-NEXT: ret i64 sub (i64 ptrtoaddr (ptr @g to i64), i64 ptrtoaddr (ptr @g2 to i64))
99115
;
100-
ret i64 ptrtoaddr (ptr getelementptr (i8, ptr @g, i64 sub (i64 0, i64 ptrtoaddr (ptr @g2 to i64))) to i64)
116+
%toaddr = ptrtoaddr ptr getelementptr (i8, ptr @g, i64 sub (i64 0, i64 ptrtoaddr (ptr @g2 to i64))) to i64
117+
ret i64 %toaddr
101118
}
102119

103120
define i32 @ptrtoaddr_gep_sub_addrsize() {
104121
; CHECK-LABEL: define i32 @ptrtoaddr_gep_sub_addrsize() {
105122
; CHECK-NEXT: ret i32 sub (i32 ptrtoaddr (ptr addrspace(1) @g.as1 to i32), i32 ptrtoaddr (ptr addrspace(1) @g2.as1 to i32))
106123
;
107-
ret i32 ptrtoaddr (ptr addrspace(1) getelementptr (i8, ptr addrspace(1) @g.as1, i32 sub (i32 0, i32 ptrtoaddr (ptr addrspace(1) @g2.as1 to i32))) to i32)
124+
%toaddr = ptrtoaddr ptr addrspace(1) getelementptr (i8, ptr addrspace(1) @g.as1, i32 sub (i32 0, i32 ptrtoaddr (ptr addrspace(1) @g2.as1 to i32))) to i32
125+
ret i32 %toaddr
108126
}
109127

110128
; Don't fold inttoptr of ptrtoaddr away. inttoptr will pick a previously
@@ -114,28 +132,32 @@ define ptr @inttoptr_of_ptrtoaddr() {
114132
; CHECK-LABEL: define ptr @inttoptr_of_ptrtoaddr() {
115133
; CHECK-NEXT: ret ptr inttoptr (i64 ptrtoaddr (ptr @g to i64) to ptr)
116134
;
117-
ret ptr inttoptr (i64 ptrtoaddr (ptr @g to i64) to ptr)
135+
%toptr = inttoptr i64 ptrtoaddr (ptr @g to i64) to ptr
136+
ret ptr %toptr
118137
}
119138

120139
define i64 @ptrtoaddr_sub_consts_unrelated() {
121140
; CHECK-LABEL: define i64 @ptrtoaddr_sub_consts_unrelated() {
122141
; CHECK-NEXT: ret i64 sub (i64 ptrtoaddr (ptr @g to i64), i64 ptrtoaddr (ptr @g2 to i64))
123142
;
124-
ret i64 sub (i64 ptrtoaddr (ptr @g to i64), i64 ptrtoaddr (ptr @g2 to i64))
143+
%sub = sub i64 ptrtoaddr (ptr @g to i64), ptrtoaddr (ptr @g2 to i64)
144+
ret i64 %sub
125145
}
126146

127147
define i64 @ptrtoaddr_sub_consts_offset() {
128148
; CHECK-LABEL: define i64 @ptrtoaddr_sub_consts_offset() {
129149
; CHECK-NEXT: ret i64 42
130150
;
131-
ret i64 sub (i64 ptrtoaddr (ptr getelementptr (i8, ptr @g, i64 42) to i64), i64 ptrtoaddr (ptr @g to i64))
151+
%sub = sub i64 ptrtoaddr (ptr getelementptr (i8, ptr @g, i64 42) to i64), ptrtoaddr (ptr @g to i64)
152+
ret i64 %sub
132153
}
133154

134155
define i32 @ptrtoaddr_sub_consts_offset_addrsize() {
135156
; CHECK-LABEL: define i32 @ptrtoaddr_sub_consts_offset_addrsize() {
136157
; CHECK-NEXT: ret i32 42
137158
;
138-
ret i32 sub (i32 ptrtoaddr (ptr addrspace(1) getelementptr (i8, ptr addrspace(1) @g.as1, i32 42) to i32), i32 ptrtoaddr (ptr addrspace(1) @g.as1 to i32))
159+
%sub = sub i32 ptrtoaddr (ptr addrspace(1) getelementptr (i8, ptr addrspace(1) @g.as1, i32 42) to i32), ptrtoaddr (ptr addrspace(1) @g.as1 to i32)
160+
ret i32 %sub
139161
}
140162

141163
define i64 @ptrtoaddr_sub_known_offset(ptr %p) {

0 commit comments

Comments
 (0)