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