@@ -445,9 +445,67 @@ bb2: ; preds = %select.unfold
445445 unreachable
446446}
447447
448+
449+ define i16 @DTU_update_crash () {
450+ ; CHECK-LABEL: @DTU_update_crash(
451+ ; CHECK-NEXT: entry:
452+ ; CHECK-NEXT: br label [[FOR_BODY_SELECTBLOCK:%.*]]
453+ ; CHECK: for.body.selectblock:
454+ ; CHECK-NEXT: br i1 false, label [[SWITCHBLOCK_JT0:%.*]], label [[SEL_SI_UNFOLD_FALSE_JT0:%.*]]
455+ ; CHECK: sel.si.unfold.false:
456+ ; CHECK-NEXT: br label [[SWITCHBLOCK:%.*]]
457+ ; CHECK: sel.si.unfold.false.jt0:
458+ ; CHECK-NEXT: [[DOTSI_UNFOLD_PHI_JT0:%.*]] = phi i32 [ 0, [[FOR_BODY_SELECTBLOCK]] ]
459+ ; CHECK-NEXT: br label [[SWITCHBLOCK_JT0]]
460+ ; CHECK: switchblock:
461+ ; CHECK-NEXT: [[SWITCHBLOCK_PHI:%.*]] = phi i32 [ poison, [[SEL_SI_UNFOLD_FALSE:%.*]] ]
462+ ; CHECK-NEXT: [[P_24_ADDR_3:%.*]] = phi i32 [ 0, [[SEL_SI_UNFOLD_FALSE]] ]
463+ ; CHECK-NEXT: switch i32 [[SWITCHBLOCK_PHI]], label [[CLEANUP:%.*]] [
464+ ; CHECK-NEXT: i32 0, label [[FOR_INC:%.*]]
465+ ; CHECK-NEXT: i32 1, label [[CLEANUP]]
466+ ; CHECK-NEXT: i32 5, label [[FOR_BODY_SELECTBLOCK]]
467+ ; CHECK-NEXT: ]
468+ ; CHECK: switchblock.jt0:
469+ ; CHECK-NEXT: [[SWITCHBLOCK_PHI_JT0:%.*]] = phi i32 [ 0, [[FOR_BODY_SELECTBLOCK]] ], [ [[DOTSI_UNFOLD_PHI_JT0]], [[SEL_SI_UNFOLD_FALSE_JT0]] ]
470+ ; CHECK-NEXT: [[P_24_ADDR_3_JT0:%.*]] = phi i32 [ 0, [[FOR_BODY_SELECTBLOCK]] ], [ 0, [[SEL_SI_UNFOLD_FALSE_JT0]] ]
471+ ; CHECK-NEXT: br label [[FOR_INC]]
472+ ; CHECK: for.inc:
473+ ; CHECK-NEXT: br i1 false, label [[FOR_BODY_SELECTBLOCK]], label [[CLEANUP]]
474+ ; CHECK: cleanup:
475+ ; CHECK-NEXT: call void (...) @llvm.fake.use(i32 [[P_24_ADDR_3_JT0]])
476+ ; CHECK-NEXT: ret i16 0
477+ ;
478+ entry:
479+ br label %for.body.selectblock
480+
481+ for.body.selectblock: ; preds = %for.inc, %switchblock, %entry
482+ %sel = select i1 false , i32 0 , i32 0
483+ br label %switchblock
484+
485+ switchblock: ; preds = %for.body.selectblock
486+ %switchblock.phi = phi i32 [ %sel , %for.body.selectblock ]
487+ %p_24.addr.3 = phi i32 [ 0 , %for.body.selectblock ]
488+ switch i32 %switchblock.phi , label %cleanup [
489+ i32 0 , label %for.inc
490+ i32 1 , label %cleanup
491+ i32 5 , label %for.body.selectblock
492+ ]
493+
494+ for.inc: ; preds = %switchblock
495+ br i1 false , label %for.body.selectblock , label %cleanup
496+
497+ cleanup: ; preds = %for.inc, %switchblock, %switchblock
498+ call void (...) @llvm.fake.use (i32 %p_24.addr.3 )
499+ ret i16 0
500+ }
501+
502+ declare void @llvm.fake.use (...)
503+
448504!0 = !{!"function_entry_count" , i32 10 }
449505!1 = !{!"branch_weights" , i32 3 , i32 5 }
450506;.
507+ ; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) }
508+ ;.
451509; CHECK: [[META0:![0-9]+]] = !{!"function_entry_count", i32 10}
452510; CHECK: [[PROF1]] = !{!"branch_weights", i32 3, i32 5}
453511;.
0 commit comments