@@ -171,24 +171,30 @@ define internal i8* @f2(i8* readnone %0) local_unnamed_addr #0 {
171
171
; IS__CGSCC_OPM: Function Attrs: noinline nounwind uwtable
172
172
; IS__CGSCC_OPM-LABEL: define {{[^@]+}}@f2
173
173
; IS__CGSCC_OPM-SAME: (i8* readnone [[TMP0:%.*]]) local_unnamed_addr #[[ATTR2:[0-9]+]] {
174
- ; IS__CGSCC_OPM-NEXT: unreachable
175
- ; IS__CGSCC_OPM: 2:
176
- ; IS__CGSCC_OPM-NEXT: unreachable
174
+ ; IS__CGSCC_OPM-NEXT: [[TMP2:%.*]] = icmp eq i8* [[TMP0]], null
175
+ ; IS__CGSCC_OPM-NEXT: br i1 [[TMP2]], label [[TMP4:%.*]], label [[TMP3:%.*]]
177
176
; IS__CGSCC_OPM: 3:
178
- ; IS__CGSCC_OPM-NEXT: unreachable
177
+ ; IS__CGSCC_OPM-NEXT: br label [[TMP6:%.*]]
179
178
; IS__CGSCC_OPM: 4:
180
- ; IS__CGSCC_OPM-NEXT: unreachable
179
+ ; IS__CGSCC_OPM-NEXT: [[TMP5:%.*]] = tail call i8* @f3(i8* nonnull @a2)
180
+ ; IS__CGSCC_OPM-NEXT: br label [[TMP6]]
181
+ ; IS__CGSCC_OPM: 6:
182
+ ; IS__CGSCC_OPM-NEXT: [[TMP7:%.*]] = phi i8* [ undef, [[TMP3]] ], [ [[TMP5]], [[TMP4]] ]
183
+ ; IS__CGSCC_OPM-NEXT: ret i8* [[TMP7]]
181
184
;
182
- ; IS__CGSCC_NPM: Function Attrs: noinline nounwind uwtable
185
+ ; IS__CGSCC_NPM: Function Attrs: noinline norecurse nounwind uwtable
183
186
; IS__CGSCC_NPM-LABEL: define {{[^@]+}}@f2
184
187
; IS__CGSCC_NPM-SAME: (i8* readnone [[TMP0:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {
185
- ; IS__CGSCC_NPM-NEXT: unreachable
186
- ; IS__CGSCC_NPM: 2:
187
- ; IS__CGSCC_NPM-NEXT: unreachable
188
+ ; IS__CGSCC_NPM-NEXT: [[TMP2:%.*]] = icmp eq i8* [[TMP0]], null
189
+ ; IS__CGSCC_NPM-NEXT: br i1 [[TMP2]], label [[TMP4:%.*]], label [[TMP3:%.*]]
188
190
; IS__CGSCC_NPM: 3:
189
- ; IS__CGSCC_NPM-NEXT: unreachable
191
+ ; IS__CGSCC_NPM-NEXT: br label [[TMP6:%.*]]
190
192
; IS__CGSCC_NPM: 4:
191
- ; IS__CGSCC_NPM-NEXT: unreachable
193
+ ; IS__CGSCC_NPM-NEXT: [[TMP5:%.*]] = tail call i8* @f3()
194
+ ; IS__CGSCC_NPM-NEXT: br label [[TMP6]]
195
+ ; IS__CGSCC_NPM: 6:
196
+ ; IS__CGSCC_NPM-NEXT: [[TMP7:%.*]] = phi i8* [ undef, [[TMP3]] ], [ @a1, [[TMP4]] ]
197
+ ; IS__CGSCC_NPM-NEXT: ret i8* [[TMP7]]
192
198
;
193
199
%2 = icmp eq i8* %0 , null
194
200
br i1 %2 , label %5 , label %3
@@ -211,21 +217,23 @@ define internal i8* @f2(i8* readnone %0) local_unnamed_addr #0 {
211
217
define internal i8* @f3 (i8* readnone %0 ) local_unnamed_addr #0 {
212
218
; IS__CGSCC_OPM: Function Attrs: noinline nounwind uwtable
213
219
; IS__CGSCC_OPM-LABEL: define {{[^@]+}}@f3
214
- ; IS__CGSCC_OPM-SAME: (i8* nonnull readnone [[TMP0:%.*]]) local_unnamed_addr #[[ATTR2]] {
215
- ; IS__CGSCC_OPM-NEXT: br label [[TMP3:%.*]]
216
- ; IS__CGSCC_OPM: 2:
217
- ; IS__CGSCC_OPM-NEXT: unreachable
220
+ ; IS__CGSCC_OPM-SAME: (i8* readnone [[TMP0:%.*]]) local_unnamed_addr #[[ATTR2]] {
221
+ ; IS__CGSCC_OPM-NEXT: [[TMP2:%.*]] = icmp eq i8* [[TMP0]], null
222
+ ; IS__CGSCC_OPM-NEXT: br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]
218
223
; IS__CGSCC_OPM: 3:
219
- ; IS__CGSCC_OPM-NEXT: ret i8* @a1
224
+ ; IS__CGSCC_OPM-NEXT: br label [[TMP4]]
225
+ ; IS__CGSCC_OPM: 4:
226
+ ; IS__CGSCC_OPM-NEXT: [[TMP5:%.*]] = phi i8* [ @a2, [[TMP3]] ], [ @a1, [[TMP1:%.*]] ]
227
+ ; IS__CGSCC_OPM-NEXT: ret i8* [[TMP5]]
220
228
;
221
- ; IS__CGSCC_NPM: Function Attrs: noinline nounwind uwtable
229
+ ; IS__CGSCC_NPM: Function Attrs: nofree noinline norecurse nosync nounwind readnone willreturn uwtable
222
230
; IS__CGSCC_NPM-LABEL: define {{[^@]+}}@f3
223
- ; IS__CGSCC_NPM-SAME: (i8* nonnull readnone [[TMP0:%.*]] ) local_unnamed_addr #[[ATTR1 ]] {
224
- ; IS__CGSCC_NPM-NEXT: br label [[TMP3 :%.*]]
225
- ; IS__CGSCC_NPM: 2 :
231
+ ; IS__CGSCC_NPM-SAME: () local_unnamed_addr #[[ATTR0 ]] {
232
+ ; IS__CGSCC_NPM-NEXT: br label [[TMP2 :%.*]]
233
+ ; IS__CGSCC_NPM: 1 :
226
234
; IS__CGSCC_NPM-NEXT: unreachable
227
- ; IS__CGSCC_NPM: 3 :
228
- ; IS__CGSCC_NPM-NEXT: ret i8* @a1
235
+ ; IS__CGSCC_NPM: 2 :
236
+ ; IS__CGSCC_NPM-NEXT: ret i8* undef
229
237
;
230
238
%2 = icmp eq i8* %0 , null
231
239
br i1 %2 , label %3 , label %5
@@ -292,24 +300,30 @@ define internal i8* @f2b(i8* readnone %0) local_unnamed_addr #0 {
292
300
; IS__CGSCC_OPM: Function Attrs: noinline nounwind uwtable
293
301
; IS__CGSCC_OPM-LABEL: define {{[^@]+}}@f2b
294
302
; IS__CGSCC_OPM-SAME: (i8* readnone [[TMP0:%.*]]) local_unnamed_addr #[[ATTR2]] {
295
- ; IS__CGSCC_OPM-NEXT: unreachable
296
- ; IS__CGSCC_OPM: 2:
297
- ; IS__CGSCC_OPM-NEXT: unreachable
303
+ ; IS__CGSCC_OPM-NEXT: [[TMP2:%.*]] = icmp eq i8* [[TMP0]], null
304
+ ; IS__CGSCC_OPM-NEXT: br i1 [[TMP2]], label [[TMP4:%.*]], label [[TMP3:%.*]]
298
305
; IS__CGSCC_OPM: 3:
299
- ; IS__CGSCC_OPM-NEXT: unreachable
306
+ ; IS__CGSCC_OPM-NEXT: br label [[TMP6:%.*]]
300
307
; IS__CGSCC_OPM: 4:
301
- ; IS__CGSCC_OPM-NEXT: unreachable
308
+ ; IS__CGSCC_OPM-NEXT: [[TMP5:%.*]] = tail call i8* @f3b(i8* nonnull @a2)
309
+ ; IS__CGSCC_OPM-NEXT: br label [[TMP6]]
310
+ ; IS__CGSCC_OPM: 6:
311
+ ; IS__CGSCC_OPM-NEXT: [[TMP7:%.*]] = phi i8* [ undef, [[TMP3]] ], [ [[TMP5]], [[TMP4]] ]
312
+ ; IS__CGSCC_OPM-NEXT: ret i8* [[TMP7]]
302
313
;
303
- ; IS__CGSCC_NPM: Function Attrs: noinline nounwind uwtable
314
+ ; IS__CGSCC_NPM: Function Attrs: noinline norecurse nounwind uwtable
304
315
; IS__CGSCC_NPM-LABEL: define {{[^@]+}}@f2b
305
316
; IS__CGSCC_NPM-SAME: (i8* readnone [[TMP0:%.*]]) local_unnamed_addr #[[ATTR1]] {
306
- ; IS__CGSCC_NPM-NEXT: unreachable
307
- ; IS__CGSCC_NPM: 2:
308
- ; IS__CGSCC_NPM-NEXT: unreachable
317
+ ; IS__CGSCC_NPM-NEXT: [[TMP2:%.*]] = icmp eq i8* [[TMP0]], null
318
+ ; IS__CGSCC_NPM-NEXT: br i1 [[TMP2]], label [[TMP4:%.*]], label [[TMP3:%.*]]
309
319
; IS__CGSCC_NPM: 3:
310
- ; IS__CGSCC_NPM-NEXT: unreachable
320
+ ; IS__CGSCC_NPM-NEXT: br label [[TMP6:%.*]]
311
321
; IS__CGSCC_NPM: 4:
312
- ; IS__CGSCC_NPM-NEXT: unreachable
322
+ ; IS__CGSCC_NPM-NEXT: [[TMP5:%.*]] = tail call i8* @f3b()
323
+ ; IS__CGSCC_NPM-NEXT: br label [[TMP6]]
324
+ ; IS__CGSCC_NPM: 6:
325
+ ; IS__CGSCC_NPM-NEXT: [[TMP7:%.*]] = phi i8* [ undef, [[TMP3]] ], [ @a1, [[TMP4]] ]
326
+ ; IS__CGSCC_NPM-NEXT: ret i8* [[TMP7]]
313
327
;
314
328
%2 = icmp eq i8* %0 , null
315
329
br i1 %2 , label %5 , label %3
@@ -333,21 +347,23 @@ define internal i8* @f3b(i8* readnone %0) local_unnamed_addr #0 {
333
347
;
334
348
; IS__CGSCC_OPM: Function Attrs: noinline nounwind uwtable
335
349
; IS__CGSCC_OPM-LABEL: define {{[^@]+}}@f3b
336
- ; IS__CGSCC_OPM-SAME: (i8* nonnull readnone [[TMP0:%.*]]) local_unnamed_addr #[[ATTR2]] {
337
- ; IS__CGSCC_OPM-NEXT: br label [[TMP3:%.*]]
338
- ; IS__CGSCC_OPM: 2:
339
- ; IS__CGSCC_OPM-NEXT: unreachable
350
+ ; IS__CGSCC_OPM-SAME: (i8* readnone [[TMP0:%.*]]) local_unnamed_addr #[[ATTR2]] {
351
+ ; IS__CGSCC_OPM-NEXT: [[TMP2:%.*]] = icmp eq i8* [[TMP0]], null
352
+ ; IS__CGSCC_OPM-NEXT: br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]
340
353
; IS__CGSCC_OPM: 3:
341
- ; IS__CGSCC_OPM-NEXT: ret i8* @a1
354
+ ; IS__CGSCC_OPM-NEXT: br label [[TMP4]]
355
+ ; IS__CGSCC_OPM: 4:
356
+ ; IS__CGSCC_OPM-NEXT: [[TMP5:%.*]] = phi i8* [ @a2, [[TMP3]] ], [ @a1, [[TMP1:%.*]] ]
357
+ ; IS__CGSCC_OPM-NEXT: ret i8* [[TMP5]]
342
358
;
343
- ; IS__CGSCC_NPM: Function Attrs: noinline nounwind uwtable
359
+ ; IS__CGSCC_NPM: Function Attrs: nofree noinline norecurse nosync nounwind readnone willreturn uwtable
344
360
; IS__CGSCC_NPM-LABEL: define {{[^@]+}}@f3b
345
- ; IS__CGSCC_NPM-SAME: (i8* nonnull readnone [[TMP0:%.*]] ) local_unnamed_addr #[[ATTR1 ]] {
346
- ; IS__CGSCC_NPM-NEXT: br label [[TMP3 :%.*]]
347
- ; IS__CGSCC_NPM: 2 :
361
+ ; IS__CGSCC_NPM-SAME: () local_unnamed_addr #[[ATTR0 ]] {
362
+ ; IS__CGSCC_NPM-NEXT: br label [[TMP2 :%.*]]
363
+ ; IS__CGSCC_NPM: 1 :
348
364
; IS__CGSCC_NPM-NEXT: unreachable
349
- ; IS__CGSCC_NPM: 3 :
350
- ; IS__CGSCC_NPM-NEXT: ret i8* @a1
365
+ ; IS__CGSCC_NPM: 2 :
366
+ ; IS__CGSCC_NPM-NEXT: ret i8* undef
351
367
;
352
368
%2 = icmp eq i8* %0 , null
353
369
br i1 %2 , label %3 , label %5
@@ -1131,7 +1147,7 @@ attributes #2 = { null_pointer_is_valid }
1131
1147
; IS__CGSCC_OPM: attributes #[[ATTR12]] = { readonly willreturn }
1132
1148
;.
1133
1149
; IS__CGSCC_NPM: attributes #[[ATTR0]] = { nofree noinline norecurse nosync nounwind readnone willreturn uwtable }
1134
- ; IS__CGSCC_NPM: attributes #[[ATTR1]] = { noinline nounwind uwtable }
1150
+ ; IS__CGSCC_NPM: attributes #[[ATTR1]] = { noinline norecurse nounwind uwtable }
1135
1151
; IS__CGSCC_NPM: attributes #[[ATTR2]] = { nounwind }
1136
1152
; IS__CGSCC_NPM: attributes #[[ATTR3]] = { nofree nosync nounwind }
1137
1153
; IS__CGSCC_NPM: attributes #[[ATTR4]] = { argmemonly nofree norecurse nosync nounwind readonly willreturn }
0 commit comments