1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=loop-deletion -verify-loop-info -S | FileCheck %s 3 4target triple = "x86_64-unknown-linux-gnu" 5 6@G = external global i32 7 8define void @func_1() { 9; CHECK-LABEL: @func_1( 10; CHECK-NEXT: entry: 11; CHECK-NEXT: br label [[LBL_2368:%.*]] 12; CHECK: lbl_2368: 13; CHECK-NEXT: [[CMP289:%.*]] = icmp slt i32 undef, -5 14; CHECK-NEXT: br i1 [[CMP289]], label [[CLEANUP967:%.*]], label [[UNREACHABLE:%.*]] 15; CHECK: cleanup967: 16; CHECK-NEXT: switch i32 undef, label [[CLEANUP1169:%.*]] [ 17; CHECK-NEXT: i32 20, label [[CLEANUP967_LBL_2368_CRIT_EDGE:%.*]] 18; CHECK-NEXT: ] 19; CHECK: cleanup967.lbl_2368_crit_edge: 20; CHECK-NEXT: unreachable 21; CHECK: cleanup1169: 22; CHECK-NEXT: ret void 23; CHECK: unreachable: 24; CHECK-NEXT: unreachable 25; 26entry: 27 br label %lbl_2368 28 29lbl_2368: 30 %cmp289 = icmp slt i32 undef, -5 31 br i1 %cmp289, label %cleanup967, label %unreachable 32 33cleanup967: 34 switch i32 undef, label %cleanup1169 [ 35 i32 20, label %lbl_2368 36 ] 37 38cleanup1169: 39 ret void 40 41unreachable: 42 unreachable 43} 44 45define void @func_2() { 46; CHECK-LABEL: @func_2( 47; CHECK-NEXT: entry: 48; CHECK-NEXT: br label [[LBL_2368:%.*]] 49; CHECK: lbl_2368: 50; CHECK-NEXT: br i1 false, label [[CLEANUP967:%.*]], label [[UNREACHABLE:%.*]] 51; CHECK: cleanup967: 52; CHECK-NEXT: switch i32 undef, label [[CLEANUP1169:%.*]] [ 53; CHECK-NEXT: i32 20, label [[CLEANUP967_LBL_2368_CRIT_EDGE:%.*]] 54; CHECK-NEXT: ] 55; CHECK: cleanup967.lbl_2368_crit_edge: 56; CHECK-NEXT: unreachable 57; CHECK: cleanup1169: 58; CHECK-NEXT: ret void 59; CHECK: unreachable: 60; CHECK-NEXT: unreachable 61; 62entry: 63 br label %lbl_2368 64 65lbl_2368: 66 br i1 false, label %cleanup967, label %unreachable 67 68cleanup967: 69 switch i32 undef, label %cleanup1169 [ 70 i32 20, label %lbl_2368 71 ] 72 73cleanup1169: 74 ret void 75 76unreachable: 77 unreachable 78} 79