xref: /llvm-project/llvm/test/Transforms/LoopDeletion/switch.ll (revision 4931cacb9778bde3d8d2e04575ac162bb090d6be)
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