@@ -304,32 +304,43 @@ end:
304
304
define void @pr106083_invalidBBarg_fold (i1 %cmp1 , i1 %cmp2 , i1 %not , ptr %d ) {
305
305
; CHECK-LABEL: @pr106083_invalidBBarg_fold(
306
306
; CHECK-NEXT: bb:
307
- ; CHECK-NEXT: br i1 [[CMP1:%.*]], label [[BB1:%.*]], label [[SEL_SI_UNFOLD_FALSE:%.*]]
308
- ; CHECK: sel.si.unfold.false:
309
- ; CHECK-NEXT: [[DOTSI_UNFOLD_PHI1:%.*]] = phi i32 [ 1, [[BB:%.*]] ]
310
- ; CHECK-NEXT: br label [[BB1]]
307
+ ; CHECK-NEXT: br label [[BB1:%.*]]
311
308
; CHECK: BB1:
312
- ; CHECK-NEXT: [[I:%.*]] = phi i16 [ 0, [[BB1_BACKEDGE:%.*]] ], [ 0, [[BB]] ], [ 1, [[BB7:%.*]] ], [ 0, [[SEL_SI_UNFOLD_FALSE]] ], [ 1, [[BB7_JT0:%.*]] ]
313
- ; CHECK-NEXT: [[SEL_SI_UNFOLD_PHI:%.*]] = phi i32 [ [[SEL_SI_UNFOLD_PHI]], [[BB1_BACKEDGE]] ], [ [[SEL_SI_UNFOLD_PHI]], [[BB7]] ], [ 0, [[BB]] ], [ [[DOTSI_UNFOLD_PHI1]], [[SEL_SI_UNFOLD_FALSE]] ], [ [[SEL_SI_UNFOLD_PHI]], [[BB7_JT0]] ]
309
+ ; CHECK-NEXT: [[I:%.*]] = phi i16 [ 0, [[BB1_BACKEDGE:%.*]] ], [ 0, [[BB:%.*]] ], [ 1, [[BB9:%.*]] ], [ 1, [[BB7_JT0:%.*]] ]
314
310
; CHECK-NEXT: br i1 [[NOT:%.*]], label [[BB7_JT0]], label [[BB2:%.*]]
315
311
; CHECK: BB2:
316
312
; CHECK-NEXT: store i16 0, ptr [[D:%.*]], align 2
317
- ; CHECK-NEXT: br i1 [[CMP2:%.*]], label [[BB7]], label [[SPEC_SELECT_SI_UNFOLD_FALSE_JT0:%.*]]
313
+ ; CHECK-NEXT: br i1 [[CMP2:%.*]], label [[BB7:%.* ]], label [[SPEC_SELECT_SI_UNFOLD_FALSE_JT0:%.*]]
318
314
; CHECK: spec.select.si.unfold.false:
319
- ; CHECK-NEXT: br label [[BB7 ]]
315
+ ; CHECK-NEXT: br label [[BB9 ]]
320
316
; CHECK: spec.select.si.unfold.false.jt0:
321
317
; CHECK-NEXT: [[DOTSI_UNFOLD_PHI_JT0:%.*]] = phi i32 [ 0, [[BB2]] ]
322
318
; CHECK-NEXT: br label [[BB7_JT0]]
319
+ ; CHECK: sel.si.unfold.true:
320
+ ; CHECK-NEXT: br i1 [[CMP1:%.*]], label [[BB9]], label [[SEL_SI_UNFOLD_FALSE_JT1:%.*]]
321
+ ; CHECK: sel.si.unfold.true.jt0:
322
+ ; CHECK-NEXT: [[DOTSI_UNFOLD_PHI1:%.*]] = phi i32 [ 0, [[BB2]] ]
323
+ ; CHECK-NEXT: br i1 [[CMP1]], label [[BB7_JT0]], label [[SEL_SI_UNFOLD_FALSE:%.*]]
324
+ ; CHECK: sel.si.unfold.false:
325
+ ; CHECK-NEXT: [[DOTSI_UNFOLD_PHI2:%.*]] = phi i32 [ 1, [[BB7]] ]
326
+ ; CHECK-NEXT: br label [[BB9]]
327
+ ; CHECK: sel.si.unfold.false.jt1:
328
+ ; CHECK-NEXT: [[DOTSI_UNFOLD_PHI2_JT1:%.*]] = phi i32 [ 1, [[SEL_SI_UNFOLD_TRUE:%.*]] ]
329
+ ; CHECK-NEXT: br label [[BB7_JT1:%.*]]
323
330
; CHECK: BB7:
324
- ; CHECK-NEXT: [[D_PROMOTED4:%.*]] = phi i16 [ 1, [[BB2 ]] ], [ 1, [[SPEC_SELECT_SI_UNFOLD_FALSE:%.* ]] ]
325
- ; CHECK-NEXT: [[_3:%.*]] = phi i32 [ [[SEL_SI_UNFOLD_PHI]] , [[BB2 ]] ], [ poison , [[SPEC_SELECT_SI_UNFOLD_FALSE ]] ]
331
+ ; CHECK-NEXT: [[D_PROMOTED4:%.*]] = phi i16 [ 1, [[SPEC_SELECT_SI_UNFOLD_FALSE:%.* ]] ], [ 1, [[SEL_SI_UNFOLD_TRUE]] ], [ 1, [[SEL_SI_UNFOLD_FALSE ]] ]
332
+ ; CHECK-NEXT: [[_3:%.*]] = phi i32 [ poison, [[SPEC_SELECT_SI_UNFOLD_FALSE]] ] , [ poison, [[SEL_SI_UNFOLD_TRUE ]] ], [ [[DOTSI_UNFOLD_PHI2]] , [[SEL_SI_UNFOLD_FALSE ]] ]
326
333
; CHECK-NEXT: switch i32 [[_3]], label [[BB1_BACKEDGE]] [
327
334
; CHECK-NEXT: i32 0, label [[BB1]]
328
335
; CHECK-NEXT: i32 1, label [[BB8:%.*]]
329
336
; CHECK-NEXT: ]
337
+ ; CHECK: BB7.jt1:
338
+ ; CHECK-NEXT: [[D_PROMOTED4_JT1:%.*]] = phi i16 [ 1, [[SEL_SI_UNFOLD_FALSE_JT1]] ]
339
+ ; CHECK-NEXT: [[_3_JT1:%.*]] = phi i32 [ [[DOTSI_UNFOLD_PHI2_JT1]], [[SEL_SI_UNFOLD_FALSE_JT1]] ]
340
+ ; CHECK-NEXT: br label [[BB8]]
330
341
; CHECK: BB7.jt0:
331
- ; CHECK-NEXT: [[D_PROMOTED4_JT0:%.*]] = phi i16 [ 0, [[BB1]] ], [ 1, [[SPEC_SELECT_SI_UNFOLD_FALSE_JT0]] ]
332
- ; CHECK-NEXT: [[_3_JT0:%.*]] = phi i32 [ 0, [[BB1]] ], [ [[DOTSI_UNFOLD_PHI_JT0]], [[SPEC_SELECT_SI_UNFOLD_FALSE_JT0]] ]
342
+ ; CHECK-NEXT: [[D_PROMOTED4_JT0:%.*]] = phi i16 [ 0, [[BB1]] ], [ 1, [[SPEC_SELECT_SI_UNFOLD_FALSE_JT0]] ], [ 1, [[BB7]] ]
343
+ ; CHECK-NEXT: [[_3_JT0:%.*]] = phi i32 [ 0, [[BB1]] ], [ [[DOTSI_UNFOLD_PHI_JT0]], [[SPEC_SELECT_SI_UNFOLD_FALSE_JT0]] ], [ [[DOTSI_UNFOLD_PHI1]], [[BB7]] ]
333
344
; CHECK-NEXT: br label [[BB1]]
334
345
; CHECK: BB1.backedge:
335
346
; CHECK-NEXT: br label [[BB1]]
@@ -367,30 +378,40 @@ BB8: ; preds = %BB7
367
378
define void @pr106083_select_dead_uses (i1 %cmp1 , i1 %not , ptr %p ) {
368
379
; CHECK-LABEL: @pr106083_select_dead_uses(
369
380
; CHECK-NEXT: bb:
370
- ; CHECK-NEXT: br i1 [[CMP1:%.*]], label [[DOTLOOPEXIT6:%.*]], label [[SPEC_SELECT_SI_UNFOLD_FALSE:%.*]]
371
- ; CHECK: spec.select.si.unfold.false:
372
- ; CHECK-NEXT: [[DOTSI_UNFOLD_PHI1:%.*]] = phi i32 [ 1, [[BB:%.*]] ]
373
- ; CHECK-NEXT: br label [[DOTLOOPEXIT6]]
381
+ ; CHECK-NEXT: br label [[DOTLOOPEXIT6:%.*]]
374
382
; CHECK: .loopexit6:
375
- ; CHECK-NEXT: [[SPEC_SELECT_SI_UNFOLD_PHI:%.*]] = phi i32 [ [[SPEC_SELECT_SI_UNFOLD_PHI]], [[SELECT_UNFOLD:%.*]] ], [ 0, [[BB]] ], [ [[DOTSI_UNFOLD_PHI1]], [[SPEC_SELECT_SI_UNFOLD_FALSE]] ]
376
383
; CHECK-NEXT: br i1 [[NOT:%.*]], label [[SELECT_UNFOLD_JT0:%.*]], label [[BB1:%.*]]
377
384
; CHECK: bb1:
378
385
; CHECK-NEXT: [[I:%.*]] = load i32, ptr [[P:%.*]], align 4
379
386
; CHECK-NEXT: [[NOT2:%.*]] = icmp eq i32 0, 0
380
- ; CHECK-NEXT: br i1 [[NOT2]], label [[SELECT_UNFOLD]], label [[SPEC_SELECT7_SI_UNFOLD_FALSE_JT0:%.*]]
387
+ ; CHECK-NEXT: br i1 [[NOT2]], label [[SELECT_UNFOLD:%.* ]], label [[SPEC_SELECT7_SI_UNFOLD_FALSE_JT0:%.*]]
381
388
; CHECK: spec.select7.si.unfold.false:
382
- ; CHECK-NEXT: br label [[SELECT_UNFOLD ]]
389
+ ; CHECK-NEXT: br label [[SELECT_UNFOLD1:%.* ]]
383
390
; CHECK: spec.select7.si.unfold.false.jt0:
384
391
; CHECK-NEXT: [[DOTSI_UNFOLD_PHI_JT0:%.*]] = phi i32 [ 0, [[BB1]] ]
385
392
; CHECK-NEXT: br label [[SELECT_UNFOLD_JT0]]
393
+ ; CHECK: spec.select.si.unfold.true:
394
+ ; CHECK-NEXT: br i1 [[CMP1:%.*]], label [[SELECT_UNFOLD1]], label [[SPEC_SELECT_SI_UNFOLD_FALSE_JT1:%.*]]
395
+ ; CHECK: spec.select.si.unfold.true.jt0:
396
+ ; CHECK-NEXT: [[DOTSI_UNFOLD_PHI1:%.*]] = phi i32 [ 0, [[BB1]] ]
397
+ ; CHECK-NEXT: br i1 [[CMP1]], label [[SELECT_UNFOLD_JT0]], label [[SPEC_SELECT_SI_UNFOLD_FALSE:%.*]]
398
+ ; CHECK: spec.select.si.unfold.false:
399
+ ; CHECK-NEXT: [[DOTSI_UNFOLD_PHI2:%.*]] = phi i32 [ 1, [[SELECT_UNFOLD]] ]
400
+ ; CHECK-NEXT: br label [[SELECT_UNFOLD1]]
401
+ ; CHECK: spec.select.si.unfold.false.jt1:
402
+ ; CHECK-NEXT: [[DOTSI_UNFOLD_PHI2_JT1:%.*]] = phi i32 [ 1, [[SPEC_SELECT_SI_UNFOLD_TRUE:%.*]] ]
403
+ ; CHECK-NEXT: br label [[SELECT_UNFOLD_JT1:%.*]]
386
404
; CHECK: select.unfold:
387
- ; CHECK-NEXT: [[_2:%.*]] = phi i32 [ [[SPEC_SELECT_SI_UNFOLD_PHI]] , [[BB1 ]] ], [ poison , [[SPEC_SELECT7_SI_UNFOLD_FALSE:%.* ]] ]
405
+ ; CHECK-NEXT: [[_2:%.*]] = phi i32 [ poison, [[SPEC_SELECT7_SI_UNFOLD_FALSE:%.*]] ] , [ poison, [[SPEC_SELECT_SI_UNFOLD_TRUE ]] ], [ [[DOTSI_UNFOLD_PHI2]] , [[SPEC_SELECT_SI_UNFOLD_FALSE ]] ]
388
406
; CHECK-NEXT: switch i32 [[_2]], label [[BB2:%.*]] [
389
407
; CHECK-NEXT: i32 0, label [[DOTPREHEADER_PREHEADER:%.*]]
390
408
; CHECK-NEXT: i32 1, label [[DOTLOOPEXIT6]]
391
409
; CHECK-NEXT: ]
410
+ ; CHECK: select.unfold.jt1:
411
+ ; CHECK-NEXT: [[_2_JT1:%.*]] = phi i32 [ [[DOTSI_UNFOLD_PHI2_JT1]], [[SPEC_SELECT_SI_UNFOLD_FALSE_JT1]] ]
412
+ ; CHECK-NEXT: br label [[DOTLOOPEXIT6]]
392
413
; CHECK: select.unfold.jt0:
393
- ; CHECK-NEXT: [[_2_JT0:%.*]] = phi i32 [ 0, [[DOTLOOPEXIT6]] ], [ [[DOTSI_UNFOLD_PHI_JT0]], [[SPEC_SELECT7_SI_UNFOLD_FALSE_JT0]] ]
414
+ ; CHECK-NEXT: [[_2_JT0:%.*]] = phi i32 [ 0, [[DOTLOOPEXIT6]] ], [ [[DOTSI_UNFOLD_PHI_JT0]], [[SPEC_SELECT7_SI_UNFOLD_FALSE_JT0]] ], [ [[DOTSI_UNFOLD_PHI1]], [[SELECT_UNFOLD]] ]
394
415
; CHECK-NEXT: br label [[DOTPREHEADER_PREHEADER]]
395
416
; CHECK: .preheader.preheader:
396
417
; CHECK-NEXT: ret void
0 commit comments