xref: /llvm-project/llvm/test/Transforms/IRCE/bad-loop-structure.ll (revision 0ec421d024fe47fb43afdaa625309b0f799e9a59)
1; RUN: opt -S -passes=irce -irce-print-changed-loops=true < %s | FileCheck %s
2; RUN: opt -S -passes='require<branch-prob>,irce' -irce-print-changed-loops=true < %s | FileCheck %s
3
4; CHECK-NOT: irce
5
6define void @bad_loop_structure_increasing(i64 %iv.start) {
7entry:
8  br label %for.body
9
10for.body:
11  %indvars.iv = phi i64 [ %iv.start, %entry ], [ %indvars.iv.next, %for.inc ]
12  %cmp = icmp ult i64 %indvars.iv, 100
13  br i1 %cmp, label %switch.lookup, label %for.inc
14
15switch.lookup:
16  br label %for.inc
17
18for.inc:
19  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
20  %cmp55 = icmp slt i64 %indvars.iv.next, 11
21  br i1 %cmp55, label %for.body, label %for.end
22
23for.end:
24  ret void
25}
26
27define void @bad_loop_structure_decreasing(i64 %iv.start) {
28entry:
29  br label %for.body
30
31for.body:
32  %indvars.iv = phi i64 [ %iv.start, %entry ], [ %indvars.iv.next, %for.inc ]
33  %cmp = icmp ult i64 %indvars.iv, 100
34  br i1 %cmp, label %switch.lookup, label %for.inc
35
36switch.lookup:
37  br label %for.inc
38
39for.inc:
40  %indvars.iv.next = add nuw nsw i64 %indvars.iv, -1
41  %cmp55 = icmp sgt i64 %indvars.iv.next, 11
42  br i1 %cmp55, label %for.body, label %for.end
43
44for.end:
45  ret void
46}
47