@@ -41,8 +41,8 @@ define ptr@test2(i32 %A, i32 %Offset) {
41
41
; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[RHS_IDX]], 100
42
42
; CHECK-NEXT: br i1 [[COND]], label [[BB2:%.*]], label [[BB]]
43
43
; CHECK: bb2:
44
- ; CHECK-NEXT: [[RHSTO_PTR :%.*]] = inttoptr i32 [[A:%.*]] to ptr
45
- ; CHECK-NEXT: [[RHS_PTR:%.*]] = getelementptr inbounds i32, ptr [[RHSTO_PTR ]], i32 [[RHS_IDX]]
44
+ ; CHECK-NEXT: [[A_PTR :%.*]] = inttoptr i32 [[A:%.*]] to ptr
45
+ ; CHECK-NEXT: [[RHS_PTR:%.*]] = getelementptr inbounds i32, ptr [[A_PTR ]], i32 [[RHS_IDX]]
46
46
; CHECK-NEXT: ret ptr [[RHS_PTR]]
47
47
;
48
48
entry:
@@ -107,8 +107,8 @@ define ptr@test4(i16 %A, i32 %Offset) {
107
107
; CHECK-NEXT: br i1 [[COND]], label [[BB2:%.*]], label [[BB]]
108
108
; CHECK: bb2:
109
109
; CHECK-NEXT: [[TMP0:%.*]] = zext i16 [[A:%.*]] to i32
110
- ; CHECK-NEXT: [[RHSTO_PTR :%.*]] = inttoptr i32 [[TMP0]] to ptr
111
- ; CHECK-NEXT: [[RHS_PTR:%.*]] = getelementptr inbounds i32, ptr [[RHSTO_PTR ]], i32 [[RHS_IDX]]
110
+ ; CHECK-NEXT: [[A_PTR :%.*]] = inttoptr i32 [[TMP0]] to ptr
111
+ ; CHECK-NEXT: [[RHS_PTR:%.*]] = getelementptr inbounds i32, ptr [[A_PTR ]], i32 [[RHS_IDX]]
112
112
; CHECK-NEXT: ret ptr [[RHS_PTR]]
113
113
;
114
114
entry:
@@ -135,7 +135,7 @@ define ptr@test5(i32 %Offset) personality ptr @__gxx_personality_v0 {
135
135
; CHECK-LABEL: @test5(
136
136
; CHECK-NEXT: entry:
137
137
; CHECK-NEXT: [[A:%.*]] = invoke ptr @fun_ptr()
138
- ; CHECK-NEXT: to label [[CONT:%.*]] unwind label [[LPAD:%.*]]
138
+ ; CHECK-NEXT: to label [[CONT:%.*]] unwind label [[LPAD:%.*]]
139
139
; CHECK: cont:
140
140
; CHECK-NEXT: br label [[BB:%.*]]
141
141
; CHECK: bb:
@@ -148,7 +148,7 @@ define ptr@test5(i32 %Offset) personality ptr @__gxx_personality_v0 {
148
148
; CHECK-NEXT: ret ptr [[RHS_PTR]]
149
149
; CHECK: lpad:
150
150
; CHECK-NEXT: [[L:%.*]] = landingpad { ptr, i32 }
151
- ; CHECK-NEXT: cleanup
151
+ ; CHECK-NEXT: cleanup
152
152
; CHECK-NEXT: ret ptr null
153
153
;
154
154
entry:
@@ -179,7 +179,7 @@ define ptr@test6(i32 %Offset) personality ptr @__gxx_personality_v0 {
179
179
; CHECK-LABEL: @test6(
180
180
; CHECK-NEXT: entry:
181
181
; CHECK-NEXT: [[A:%.*]] = invoke i32 @fun_i32()
182
- ; CHECK-NEXT: to label [[CONT:%.*]] unwind label [[LPAD:%.*]]
182
+ ; CHECK-NEXT: to label [[CONT:%.*]] unwind label [[LPAD:%.*]]
183
183
; CHECK: cont:
184
184
; CHECK-NEXT: br label [[BB:%.*]]
185
185
; CHECK: bb:
@@ -188,12 +188,12 @@ define ptr@test6(i32 %Offset) personality ptr @__gxx_personality_v0 {
188
188
; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[RHS_IDX]], 100
189
189
; CHECK-NEXT: br i1 [[COND]], label [[BB2:%.*]], label [[BB]]
190
190
; CHECK: bb2:
191
- ; CHECK-NEXT: [[RHSTO_PTR :%.*]] = inttoptr i32 [[A]] to ptr
192
- ; CHECK-NEXT: [[RHS_PTR:%.*]] = getelementptr inbounds i32, ptr [[RHSTO_PTR ]], i32 [[RHS_IDX]]
191
+ ; CHECK-NEXT: [[A_PTR :%.*]] = inttoptr i32 [[A]] to ptr
192
+ ; CHECK-NEXT: [[RHS_PTR:%.*]] = getelementptr inbounds i32, ptr [[A_PTR ]], i32 [[RHS_IDX]]
193
193
; CHECK-NEXT: ret ptr [[RHS_PTR]]
194
194
; CHECK: lpad:
195
195
; CHECK-NEXT: [[L:%.*]] = landingpad { ptr, i32 }
196
- ; CHECK-NEXT: cleanup
196
+ ; CHECK-NEXT: cleanup
197
197
; CHECK-NEXT: ret ptr null
198
198
;
199
199
entry:
@@ -272,10 +272,16 @@ entry:
272
272
define void @test_zero_offset_cycle (ptr %arg ) {
273
273
; CHECK-LABEL: @test_zero_offset_cycle(
274
274
; CHECK-NEXT: entry:
275
+ ; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds { i64, i64 }, ptr [[ARG:%.*]], i32 0, i32 1
276
+ ; CHECK-NEXT: [[GEP_INT:%.*]] = ptrtoint ptr [[GEP]] to i32
275
277
; CHECK-NEXT: br label [[LOOP:%.*]]
276
278
; CHECK: loop:
277
- ; CHECK-NEXT: br i1 true, label [[LOOP]], label [[LOOP_CONT:%.*]]
279
+ ; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ [[GEP_INT]], [[ENTRY:%.*]] ], [ [[GEP_INT2:%.*]], [[LOOP_CONT:%.*]] ], [ [[PHI]], [[LOOP]] ]
280
+ ; CHECK-NEXT: [[PHI_PTR:%.*]] = inttoptr i32 [[PHI]] to ptr
281
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr [[GEP]], [[PHI_PTR]]
282
+ ; CHECK-NEXT: br i1 [[CMP]], label [[LOOP]], label [[LOOP_CONT]]
278
283
; CHECK: loop.cont:
284
+ ; CHECK-NEXT: [[GEP_INT2]] = ptrtoint ptr [[GEP]] to i32
279
285
; CHECK-NEXT: br label [[LOOP]]
280
286
;
281
287
entry:
0 commit comments