Skip to content

Commit 3ce360f

Browse files
committed
[IndVarSimplify] Convert more tests to opaque pointers (NFC)
1 parent 8b7b5f9 commit 3ce360f

26 files changed

+1244
-1271
lines changed

llvm/test/Transforms/IndVarSimplify/2011-10-27-lftrnull.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ define void @test() nounwind {
2727
; CHECK: for.body21.lr.ph.i:
2828
; CHECK-NEXT: br label [[FOR_BODY21_I:%.*]]
2929
; CHECK: for.body21.i:
30-
; CHECK-NEXT: [[DESTYPIXELPTR_010_I:%.*]] = phi i8* [ null, [[FOR_BODY21_LR_PH_I]] ], [ [[INCDEC_PTR_I:%.*]], [[IF_END_I126:%.*]] ]
30+
; CHECK-NEXT: [[DESTYPIXELPTR_010_I:%.*]] = phi ptr [ null, [[FOR_BODY21_LR_PH_I]] ], [ [[INCDEC_PTR_I:%.*]], [[IF_END_I126:%.*]] ]
3131
; CHECK-NEXT: br i1 undef, label [[IF_END_I126]], label [[IF_ELSE_I124:%.*]]
3232
; CHECK: if.else.i124:
33-
; CHECK-NEXT: store i8 undef, i8* [[DESTYPIXELPTR_010_I]], align 1
33+
; CHECK-NEXT: store i8 undef, ptr [[DESTYPIXELPTR_010_I]], align 1
3434
; CHECK-NEXT: br label [[IF_END_I126]]
3535
; CHECK: if.end.i126:
36-
; CHECK-NEXT: [[INCDEC_PTR_I]] = getelementptr inbounds i8, i8* [[DESTYPIXELPTR_010_I]], i32 1
36+
; CHECK-NEXT: [[INCDEC_PTR_I]] = getelementptr inbounds i8, ptr [[DESTYPIXELPTR_010_I]], i32 1
3737
; CHECK-NEXT: br i1 true, label [[FOR_BODY21_I]], label [[FOR_END_I129_LOOPEXIT:%.*]]
3838
; CHECK: for.end.i129.loopexit:
3939
; CHECK-NEXT: br label [[FOR_END_I129]]
@@ -69,16 +69,16 @@ for.body21.lr.ph.i: ; preds = %for.body.i86
6969
br label %for.body21.i
7070

7171
for.body21.i:
72-
%destYPixelPtr.010.i = phi i8* [ null, %for.body21.lr.ph.i ], [ %incdec.ptr.i, %if.end.i126 ]
72+
%destYPixelPtr.010.i = phi ptr [ null, %for.body21.lr.ph.i ], [ %incdec.ptr.i, %if.end.i126 ]
7373
%x.09.i = phi i32 [ 0, %for.body21.lr.ph.i ], [ %inc.i125, %if.end.i126 ]
7474
br i1 undef, label %if.end.i126, label %if.else.i124
7575

7676
if.else.i124: ; preds = %for.body21.i
77-
store i8 undef, i8* %destYPixelPtr.010.i, align 1
77+
store i8 undef, ptr %destYPixelPtr.010.i, align 1
7878
br label %if.end.i126
7979

8080
if.end.i126: ; preds = %if.else.i124, %for.body21.i
81-
%incdec.ptr.i = getelementptr inbounds i8, i8* %destYPixelPtr.010.i, i32 1
81+
%incdec.ptr.i = getelementptr inbounds i8, ptr %destYPixelPtr.010.i, i32 1
8282
%inc.i125 = add i32 %x.09.i, 1
8383
%cmp19.i = icmp ult i32 %inc.i125, undef
8484
br i1 %cmp19.i, label %for.body21.i, label %for.end.i129

llvm/test/Transforms/IndVarSimplify/AArch64/widen-loop-comp.ll

Lines changed: 173 additions & 173 deletions
Large diffs are not rendered by default.

llvm/test/Transforms/IndVarSimplify/ARM/code-size.ll

Lines changed: 79 additions & 79 deletions
Large diffs are not rendered by default.

llvm/test/Transforms/IndVarSimplify/ARM/indvar-cost.ll

Lines changed: 153 additions & 153 deletions
Large diffs are not rendered by default.

llvm/test/Transforms/IndVarSimplify/ARM/indvar-unroll-imm-cost.ll

Lines changed: 90 additions & 90 deletions
Large diffs are not rendered by default.

llvm/test/Transforms/IndVarSimplify/X86/eliminate-congruent-ivs.ll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,31 +107,31 @@ exit: ; preds = %loop
107107
ret void
108108
}
109109

110-
define void @test4(i32* %ptr) {
110+
define void @test4(ptr %ptr) {
111111
; CHECK-LABEL: @test4(
112112
; CHECK-NEXT: entry:
113-
; CHECK-NEXT: store i32 0, i32* [[PTR:%.*]], align 4
113+
; CHECK-NEXT: store i32 0, ptr [[PTR:%.*]], align 4
114114
; CHECK-NEXT: br label [[LOOP:%.*]]
115115
; CHECK: loop:
116116
; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], [[LOOP]] ], [ 0, [[ENTRY:%.*]] ]
117117
; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
118118
; CHECK-NEXT: [[INDVARS:%.*]] = trunc i64 [[INDVARS_IV_NEXT]] to i32
119-
; CHECK-NEXT: store i32 [[INDVARS]], i32* [[PTR]], align 4
119+
; CHECK-NEXT: store i32 [[INDVARS]], ptr [[PTR]], align 4
120120
; CHECK-NEXT: call void @foo(i64 [[INDVARS_IV]])
121121
; CHECK-NEXT: [[LOOP_COND:%.*]] = icmp eq i64 [[INDVARS_IV]], 1000
122122
; CHECK-NEXT: br i1 [[LOOP_COND]], label [[EXIT:%.*]], label [[LOOP]]
123123
; CHECK: exit:
124124
; CHECK-NEXT: ret void
125125
;
126126
entry:
127-
store i32 0, i32* %ptr, align 4
127+
store i32 0, ptr %ptr, align 4
128128
br label %loop
129129

130130
loop: ; preds = %loop, %entry
131131
%val = phi i32 [ %val.inc, %loop ], [ 0, %entry ]
132132
%iv = phi i32 [ %iv.next, %loop ], [ 0, %entry ]
133133
%val.inc = add i32 %val, 1
134-
store i32 %val.inc, i32* %ptr, align 4
134+
store i32 %val.inc, ptr %ptr, align 4
135135
%iv.wide = zext i32 %iv to i64
136136
call void @foo(i64 %iv.wide)
137137
%iv.next = add i32 %iv, 1

llvm/test/Transforms/IndVarSimplify/X86/iv-widen.ll

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ declare void @use(i64 %x)
1313
; Only one phi now.
1414
; One trunc for the gep.
1515
; One trunc for the dummy() call.
16-
define void @loop_0(i32* %a) {
16+
define void @loop_0(ptr %a) {
1717
; CHECK-LABEL: @loop_0(
1818
; CHECK-NEXT: Prologue:
1919
; CHECK-NEXT: br i1 undef, label [[B18_PREHEADER:%.*]], label [[B6:%.*]]
@@ -24,8 +24,8 @@ define void @loop_0(i32* %a) {
2424
; CHECK-NEXT: call void @use(i64 [[INDVARS_IV]])
2525
; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
2626
; CHECK-NEXT: [[TMP0:%.*]] = trunc i64 [[INDVARS_IV]] to i32
27-
; CHECK-NEXT: [[O:%.*]] = getelementptr i32, i32* [[A:%.*]], i32 [[TMP0]]
28-
; CHECK-NEXT: [[V:%.*]] = load i32, i32* [[O]], align 4
27+
; CHECK-NEXT: [[O:%.*]] = getelementptr i32, ptr [[A:%.*]], i32 [[TMP0]]
28+
; CHECK-NEXT: [[V:%.*]] = load i32, ptr [[O]], align 4
2929
; CHECK-NEXT: [[T:%.*]] = icmp eq i32 [[V]], 0
3030
; CHECK-NEXT: br i1 [[T]], label [[EXIT24:%.*]], label [[B24]]
3131
; CHECK: B24:
@@ -49,8 +49,8 @@ B18: ; preds = %B24, %Prologue
4949
%tmp23 = zext i32 %.02 to i64
5050
call void @use(i64 %tmp23)
5151
%tmp33 = add i32 %.02, 1
52-
%o = getelementptr i32, i32* %a, i32 %.02
53-
%v = load i32, i32* %o
52+
%o = getelementptr i32, ptr %a, i32 %.02
53+
%v = load i32, ptr %o
5454
%t = icmp eq i32 %v, 0
5555
br i1 %t, label %exit24, label %B24
5656

@@ -67,7 +67,7 @@ exit24: ; preds = %B18
6767
}
6868

6969
; Make sure that dead zext is removed and no widening happens.
70-
define void @loop_0_dead(i32* %a) {
70+
define void @loop_0_dead(ptr %a) {
7171
; CHECK-LABEL: @loop_0_dead(
7272
; CHECK-NEXT: Prologue:
7373
; CHECK-NEXT: br i1 undef, label [[B18_PREHEADER:%.*]], label [[B6:%.*]]
@@ -76,8 +76,8 @@ define void @loop_0_dead(i32* %a) {
7676
; CHECK: B18:
7777
; CHECK-NEXT: [[DOT02:%.*]] = phi i32 [ [[TMP33:%.*]], [[B24:%.*]] ], [ 0, [[B18_PREHEADER]] ]
7878
; CHECK-NEXT: [[TMP33]] = add nuw nsw i32 [[DOT02]], 1
79-
; CHECK-NEXT: [[O:%.*]] = getelementptr i32, i32* [[A:%.*]], i32 [[DOT02]]
80-
; CHECK-NEXT: [[V:%.*]] = load i32, i32* [[O]], align 4
79+
; CHECK-NEXT: [[O:%.*]] = getelementptr i32, ptr [[A:%.*]], i32 [[DOT02]]
80+
; CHECK-NEXT: [[V:%.*]] = load i32, ptr [[O]], align 4
8181
; CHECK-NEXT: [[T:%.*]] = icmp eq i32 [[V]], 0
8282
; CHECK-NEXT: br i1 [[T]], label [[EXIT24:%.*]], label [[B24]]
8383
; CHECK: B24:
@@ -99,8 +99,8 @@ B18: ; preds = %B24, %Prologue
9999
%.02 = phi i32 [ 0, %Prologue ], [ %tmp33, %B24 ]
100100
%tmp23 = zext i32 %.02 to i64
101101
%tmp33 = add i32 %.02, 1
102-
%o = getelementptr i32, i32* %a, i32 %.02
103-
%v = load i32, i32* %o
102+
%o = getelementptr i32, ptr %a, i32 %.02
103+
%v = load i32, ptr %o
104104
%t = icmp eq i32 %v, 0
105105
br i1 %t, label %exit24, label %B24
106106

@@ -159,11 +159,10 @@ declare void @dummy(i32)
159159
declare void @dummy.i64(i64)
160160

161161

162-
define void @loop_2(i32 %size, i32 %nsteps, i32 %hsize, i32* %lined, i8 %tmp1) {
162+
define void @loop_2(i32 %size, i32 %nsteps, i32 %hsize, ptr %lined, i8 %tmp1) {
163163
; CHECK-LABEL: @loop_2(
164164
; CHECK-NEXT: entry:
165165
; CHECK-NEXT: [[CMP215:%.*]] = icmp sgt i32 [[SIZE:%.*]], 1
166-
; CHECK-NEXT: [[BC0:%.*]] = bitcast i32* [[LINED:%.*]] to i8*
167166
; CHECK-NEXT: [[TMP0:%.*]] = sext i32 [[SIZE]] to i64
168167
; CHECK-NEXT: [[TMP1:%.*]] = sext i32 [[HSIZE:%.*]] to i64
169168
; CHECK-NEXT: [[SMAX:%.*]] = call i32 @llvm.smax.i32(i32 [[NSTEPS:%.*]], i32 1)
@@ -180,8 +179,8 @@ define void @loop_2(i32 %size, i32 %nsteps, i32 %hsize, i32* %lined, i8 %tmp1) {
180179
; CHECK: for.body2:
181180
; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ 1, [[FOR_BODY2_PREHEADER]] ], [ [[INDVARS_IV_NEXT:%.*]], [[FOR_BODY2]] ]
182181
; CHECK-NEXT: [[TMP4:%.*]] = add nsw i64 [[TMP3]], [[INDVARS_IV]]
183-
; CHECK-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i8, i8* [[BC0]], i64 [[TMP4]]
184-
; CHECK-NEXT: store i8 [[TMP1:%.*]], i8* [[ADD_PTR]], align 1
182+
; CHECK-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i8, ptr [[LINED:%.*]], i64 [[TMP4]]
183+
; CHECK-NEXT: store i8 [[TMP1:%.*]], ptr [[ADD_PTR]], align 1
185184
; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
186185
; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[INDVARS_IV_NEXT]], [[WIDE_TRIP_COUNT]]
187186
; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY2]], label [[FOR_BODY3_PREHEADER:%.*]]
@@ -193,8 +192,8 @@ define void @loop_2(i32 %size, i32 %nsteps, i32 %hsize, i32* %lined, i8 %tmp1) {
193192
; CHECK: for.body3:
194193
; CHECK-NEXT: [[INDVARS_IV3:%.*]] = phi i64 [ 1, [[FOR_BODY3_PREHEADER]] ], [ [[INDVARS_IV_NEXT4:%.*]], [[FOR_BODY3]] ]
195194
; CHECK-NEXT: [[TMP7:%.*]] = add nuw nsw i64 [[TMP6]], [[INDVARS_IV3]]
196-
; CHECK-NEXT: [[ADD_PTR2:%.*]] = getelementptr inbounds i8, i8* [[BC0]], i64 [[TMP7]]
197-
; CHECK-NEXT: store i8 [[TMP1]], i8* [[ADD_PTR2]], align 1
195+
; CHECK-NEXT: [[ADD_PTR2:%.*]] = getelementptr inbounds i8, ptr [[LINED]], i64 [[TMP7]]
196+
; CHECK-NEXT: store i8 [[TMP1]], ptr [[ADD_PTR2]], align 1
198197
; CHECK-NEXT: [[INDVARS_IV_NEXT4]] = add nuw nsw i64 [[INDVARS_IV3]], 1
199198
; CHECK-NEXT: [[EXITCOND8:%.*]] = icmp ne i64 [[INDVARS_IV_NEXT4]], [[WIDE_TRIP_COUNT7]]
200199
; CHECK-NEXT: br i1 [[EXITCOND8]], label [[FOR_BODY3]], label [[FOR_INC_LOOPEXIT:%.*]]
@@ -209,7 +208,6 @@ define void @loop_2(i32 %size, i32 %nsteps, i32 %hsize, i32* %lined, i8 %tmp1) {
209208
;
210209
entry:
211210
%cmp215 = icmp sgt i32 %size, 1
212-
%bc0 = bitcast i32* %lined to i8*
213211
br label %for.body
214212

215213
for.body:
@@ -223,8 +221,8 @@ for.body2:
223221
%k = phi i32 [ %inc, %for.body2 ], [ 1, %for.body ]
224222
%add4 = add nsw i32 %add, %k
225223
%idx.ext = sext i32 %add4 to i64
226-
%add.ptr = getelementptr inbounds i8, i8* %bc0, i64 %idx.ext
227-
store i8 %tmp1, i8* %add.ptr, align 1
224+
%add.ptr = getelementptr inbounds i8, ptr %lined, i64 %idx.ext
225+
store i8 %tmp1, ptr %add.ptr, align 1
228226
%inc = add nsw i32 %k, 1
229227
%cmp2 = icmp slt i32 %inc, %size
230228
br i1 %cmp2, label %for.body2, label %for.body3
@@ -234,8 +232,8 @@ for.body3:
234232
%l = phi i32 [ %inc2, %for.body3 ], [ 1, %for.body2 ]
235233
%add5 = add nuw i32 %add, %l
236234
%idx.ext2 = zext i32 %add5 to i64
237-
%add.ptr2 = getelementptr inbounds i8, i8* %bc0, i64 %idx.ext2
238-
store i8 %tmp1, i8* %add.ptr2, align 1
235+
%add.ptr2 = getelementptr inbounds i8, ptr %lined, i64 %idx.ext2
236+
store i8 %tmp1, ptr %add.ptr2, align 1
239237
%inc2 = add nsw i32 %l, 1
240238
%cmp3 = icmp slt i32 %inc2, %size
241239
br i1 %cmp3, label %for.body3, label %for.inc

llvm/test/Transforms/IndVarSimplify/X86/replace-iv-with-loop-invariant.ll

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -6,120 +6,120 @@ target triple = "x86_64-unknown-linux-gnu"
66

77
@G = external global i32
88

9-
define void @test0(i64* %arg) {
9+
define void @test0(ptr %arg) {
1010
; CHECK-LABEL: @test0(
1111
; CHECK-NEXT: bb:
1212
; CHECK-NEXT: br label [[BB2:%.*]]
1313
; CHECK: bb2:
14-
; CHECK-NEXT: [[TMP:%.*]] = phi i64* [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
15-
; CHECK-NEXT: [[TMP4:%.*]] = call i32* @wobble(i64* nonnull [[TMP]], i32* null)
16-
; CHECK-NEXT: [[TMP5:%.*]] = load i32, i32* null, align 8
17-
; CHECK-NEXT: [[TMP7]] = load i64*, i64** undef, align 8
14+
; CHECK-NEXT: [[TMP:%.*]] = phi ptr [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
15+
; CHECK-NEXT: [[TMP4:%.*]] = call ptr @wobble(ptr nonnull [[TMP]], ptr null)
16+
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr null, align 8
17+
; CHECK-NEXT: [[TMP7]] = load ptr, ptr undef, align 8
1818
; CHECK-NEXT: br label [[BB2]]
1919
;
2020
bb:
2121
br label %bb2
2222

2323
bb2:
24-
%tmp = phi i64* [%arg, %bb ], [ %tmp7, %bb2 ]
25-
%tmp4 = call i32* @wobble(i64* nonnull %tmp, i32* null)
26-
%tmp5 = load i32, i32* %tmp4, align 8
27-
%tmp7 = load i64*, i64** undef, align 8
24+
%tmp = phi ptr [%arg, %bb ], [ %tmp7, %bb2 ]
25+
%tmp4 = call ptr @wobble(ptr nonnull %tmp, ptr null)
26+
%tmp5 = load i32, ptr %tmp4, align 8
27+
%tmp7 = load ptr, ptr undef, align 8
2828
br label %bb2
2929
}
3030

31-
define void @test1(i64* %arg) {
31+
define void @test1(ptr %arg) {
3232
; CHECK-LABEL: @test1(
3333
; CHECK-NEXT: bb:
3434
; CHECK-NEXT: br label [[BB2:%.*]]
3535
; CHECK: bb2:
36-
; CHECK-NEXT: [[TMP:%.*]] = phi i64* [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
37-
; CHECK-NEXT: [[TMP4:%.*]] = call i32* @wobble(i64* nonnull [[TMP]], i32* inttoptr (i64 4 to i32*))
38-
; CHECK-NEXT: [[TMP5:%.*]] = load i32, i32* inttoptr (i64 4 to i32*), align 4
39-
; CHECK-NEXT: [[TMP7]] = load i64*, i64** undef, align 8
36+
; CHECK-NEXT: [[TMP:%.*]] = phi ptr [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
37+
; CHECK-NEXT: [[TMP4:%.*]] = call ptr @wobble(ptr nonnull [[TMP]], ptr inttoptr (i64 4 to ptr))
38+
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr inttoptr (i64 4 to ptr), align 4
39+
; CHECK-NEXT: [[TMP7]] = load ptr, ptr undef, align 8
4040
; CHECK-NEXT: br label [[BB2]]
4141
;
4242
bb:
4343
br label %bb2
4444

4545
bb2:
46-
%tmp = phi i64* [%arg, %bb ], [ %tmp7, %bb2 ]
47-
%tmp4 = call i32* @wobble(i64* nonnull %tmp, i32* inttoptr (i64 4 to i32*))
48-
%tmp5 = load i32, i32* %tmp4
49-
%tmp7 = load i64*, i64** undef, align 8
46+
%tmp = phi ptr [%arg, %bb ], [ %tmp7, %bb2 ]
47+
%tmp4 = call ptr @wobble(ptr nonnull %tmp, ptr inttoptr (i64 4 to ptr))
48+
%tmp5 = load i32, ptr %tmp4
49+
%tmp7 = load ptr, ptr undef, align 8
5050
br label %bb2
5151
}
5252

53-
define void @test2(i64* %arg) {
53+
define void @test2(ptr %arg) {
5454
; CHECK-LABEL: @test2(
5555
; CHECK-NEXT: bb:
5656
; CHECK-NEXT: br label [[BB2:%.*]]
5757
; CHECK: bb2:
58-
; CHECK-NEXT: [[TMP:%.*]] = phi i64* [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
59-
; CHECK-NEXT: [[TMP4:%.*]] = call i32* @wobble(i64* nonnull [[TMP]], i32* @G)
60-
; CHECK-NEXT: [[TMP5:%.*]] = load i32, i32* @G, align 4
61-
; CHECK-NEXT: [[TMP7]] = load i64*, i64** undef, align 8
58+
; CHECK-NEXT: [[TMP:%.*]] = phi ptr [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
59+
; CHECK-NEXT: [[TMP4:%.*]] = call ptr @wobble(ptr nonnull [[TMP]], ptr @G)
60+
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr @G, align 4
61+
; CHECK-NEXT: [[TMP7]] = load ptr, ptr undef, align 8
6262
; CHECK-NEXT: br label [[BB2]]
6363
;
6464
bb:
6565
br label %bb2
6666

6767
bb2:
68-
%tmp = phi i64* [%arg, %bb ], [ %tmp7, %bb2 ]
69-
%tmp4 = call i32* @wobble(i64* nonnull %tmp, i32* @G)
70-
%tmp5 = load i32, i32* %tmp4
71-
%tmp7 = load i64*, i64** undef, align 8
68+
%tmp = phi ptr [%arg, %bb ], [ %tmp7, %bb2 ]
69+
%tmp4 = call ptr @wobble(ptr nonnull %tmp, ptr @G)
70+
%tmp5 = load i32, ptr %tmp4
71+
%tmp7 = load ptr, ptr undef, align 8
7272
br label %bb2
7373
}
7474

75-
define void @test3(i64* %arg, i32* %loop.invariant) {
75+
define void @test3(ptr %arg, ptr %loop.invariant) {
7676
; CHECK-LABEL: @test3(
7777
; CHECK-NEXT: bb:
7878
; CHECK-NEXT: br label [[BB2:%.*]]
7979
; CHECK: bb2:
80-
; CHECK-NEXT: [[TMP:%.*]] = phi i64* [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
81-
; CHECK-NEXT: [[TMP4:%.*]] = call i32* @wobble(i64* nonnull [[TMP]], i32* [[LOOP_INVARIANT:%.*]])
82-
; CHECK-NEXT: [[TMP5:%.*]] = load i32, i32* [[LOOP_INVARIANT]], align 4
83-
; CHECK-NEXT: [[TMP7]] = load i64*, i64** undef, align 8
80+
; CHECK-NEXT: [[TMP:%.*]] = phi ptr [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
81+
; CHECK-NEXT: [[TMP4:%.*]] = call ptr @wobble(ptr nonnull [[TMP]], ptr [[LOOP_INVARIANT:%.*]])
82+
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[LOOP_INVARIANT]], align 4
83+
; CHECK-NEXT: [[TMP7]] = load ptr, ptr undef, align 8
8484
; CHECK-NEXT: br label [[BB2]]
8585
;
8686
bb:
8787
br label %bb2
8888

8989
bb2:
90-
%tmp = phi i64* [%arg, %bb ], [ %tmp7, %bb2 ]
91-
%tmp4 = call i32* @wobble(i64* nonnull %tmp, i32* %loop.invariant)
92-
%tmp5 = load i32, i32* %tmp4
93-
%tmp7 = load i64*, i64** undef, align 8
90+
%tmp = phi ptr [%arg, %bb ], [ %tmp7, %bb2 ]
91+
%tmp4 = call ptr @wobble(ptr nonnull %tmp, ptr %loop.invariant)
92+
%tmp5 = load i32, ptr %tmp4
93+
%tmp7 = load ptr, ptr undef, align 8
9494
br label %bb2
9595
}
9696

97-
define void @test4(i64* %arg, i32* %loop.invariant, i64 %N) {
97+
define void @test4(ptr %arg, ptr %loop.invariant, i64 %N) {
9898
; CHECK-LABEL: @test4(
9999
; CHECK-NEXT: bb:
100-
; CHECK-NEXT: [[TMP0:%.*]] = shl i64 [[N:%.*]], 6
101-
; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i32, i32* [[LOOP_INVARIANT:%.*]], i64 [[TMP0]]
100+
; CHECK-NEXT: [[TMP0:%.*]] = shl i64 [[N:%.*]], 8
101+
; CHECK-NEXT: [[UGLYGEP:%.*]] = getelementptr i8, ptr [[LOOP_INVARIANT:%.*]], i64 [[TMP0]]
102102
; CHECK-NEXT: br label [[BB2:%.*]]
103103
; CHECK: bb2:
104-
; CHECK-NEXT: [[TMP:%.*]] = phi i64* [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
104+
; CHECK-NEXT: [[TMP:%.*]] = phi ptr [ [[ARG:%.*]], [[BB:%.*]] ], [ [[TMP7:%.*]], [[BB2]] ]
105105
; CHECK-NEXT: [[MUL:%.*]] = mul nsw i64 [[N]], 64
106-
; CHECK-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, i32* [[LOOP_INVARIANT]], i64 [[MUL]]
107-
; CHECK-NEXT: [[TMP4:%.*]] = call i32* @wobble(i64* nonnull [[TMP]], i32* [[PTR]])
108-
; CHECK-NEXT: [[TMP5:%.*]] = load i32, i32* [[SCEVGEP]], align 4
109-
; CHECK-NEXT: [[TMP7]] = load i64*, i64** undef, align 8
106+
; CHECK-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, ptr [[LOOP_INVARIANT]], i64 [[MUL]]
107+
; CHECK-NEXT: [[TMP4:%.*]] = call ptr @wobble(ptr nonnull [[TMP]], ptr [[PTR]])
108+
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[UGLYGEP]], align 4
109+
; CHECK-NEXT: [[TMP7]] = load ptr, ptr undef, align 8
110110
; CHECK-NEXT: br label [[BB2]]
111111
;
112112
bb:
113113
br label %bb2
114114

115115
bb2:
116-
%tmp = phi i64* [%arg, %bb ], [ %tmp7, %bb2 ]
116+
%tmp = phi ptr [%arg, %bb ], [ %tmp7, %bb2 ]
117117
%mul = mul nsw i64 %N, 64
118-
%ptr = getelementptr inbounds i32, i32* %loop.invariant, i64 %mul
119-
%tmp4 = call i32* @wobble(i64* nonnull %tmp, i32* %ptr)
120-
%tmp5 = load i32, i32* %tmp4
121-
%tmp7 = load i64*, i64** undef, align 8
118+
%ptr = getelementptr inbounds i32, ptr %loop.invariant, i64 %mul
119+
%tmp4 = call ptr @wobble(ptr nonnull %tmp, ptr %ptr)
120+
%tmp5 = load i32, ptr %tmp4
121+
%tmp7 = load ptr, ptr undef, align 8
122122
br label %bb2
123123
}
124124

125-
declare i32* @wobble(i64*, i32* returned)
125+
declare ptr @wobble(ptr, ptr returned)

0 commit comments

Comments
 (0)