| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt < %s -loop-deletion -verify-loop-info -S | FileCheck %s |
| |
| target triple = "x86_64-unknown-linux-gnu" |
| |
| @G = external global i32 |
| |
| define void @func_1() { |
| ; CHECK-LABEL: @func_1( |
| ; CHECK-NEXT: entry: |
| ; CHECK-NEXT: br label [[LBL_2368:%.*]] |
| ; CHECK: lbl_2368: |
| ; CHECK-NEXT: [[CMP289:%.*]] = icmp slt i32 undef, -5 |
| ; CHECK-NEXT: br i1 [[CMP289]], label [[CLEANUP967:%.*]], label [[UNREACHABLE:%.*]] |
| ; CHECK: cleanup967: |
| ; CHECK-NEXT: switch i32 undef, label [[CLEANUP1169:%.*]] [ |
| ; CHECK-NEXT: i32 20, label [[CLEANUP967_LBL_2368_CRIT_EDGE:%.*]] |
| ; CHECK-NEXT: ] |
| ; CHECK: cleanup967.lbl_2368_crit_edge: |
| ; CHECK-NEXT: unreachable |
| ; CHECK: cleanup1169: |
| ; CHECK-NEXT: ret void |
| ; CHECK: unreachable: |
| ; CHECK-NEXT: unreachable |
| ; |
| entry: |
| br label %lbl_2368 |
| |
| lbl_2368: |
| %cmp289 = icmp slt i32 undef, -5 |
| br i1 %cmp289, label %cleanup967, label %unreachable |
| |
| cleanup967: |
| switch i32 undef, label %cleanup1169 [ |
| i32 20, label %lbl_2368 |
| ] |
| |
| cleanup1169: |
| ret void |
| |
| unreachable: |
| unreachable |
| } |
| |
| define void @func_2() { |
| ; CHECK-LABEL: @func_2( |
| ; CHECK-NEXT: entry: |
| ; CHECK-NEXT: br label [[LBL_2368:%.*]] |
| ; CHECK: lbl_2368: |
| ; CHECK-NEXT: br i1 false, label [[CLEANUP967:%.*]], label [[UNREACHABLE:%.*]] |
| ; CHECK: cleanup967: |
| ; CHECK-NEXT: switch i32 undef, label [[CLEANUP1169:%.*]] [ |
| ; CHECK-NEXT: i32 20, label [[CLEANUP967_LBL_2368_CRIT_EDGE:%.*]] |
| ; CHECK-NEXT: ] |
| ; CHECK: cleanup967.lbl_2368_crit_edge: |
| ; CHECK-NEXT: unreachable |
| ; CHECK: cleanup1169: |
| ; CHECK-NEXT: ret void |
| ; CHECK: unreachable: |
| ; CHECK-NEXT: unreachable |
| ; |
| entry: |
| br label %lbl_2368 |
| |
| lbl_2368: |
| br i1 false, label %cleanup967, label %unreachable |
| |
| cleanup967: |
| switch i32 undef, label %cleanup1169 [ |
| i32 20, label %lbl_2368 |
| ] |
| |
| cleanup1169: |
| ret void |
| |
| unreachable: |
| unreachable |
| } |