Skip to content

Commit 3a5592a

Browse files
committed
Added regression test
1 parent ef9c027 commit 3a5592a

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt < %s -passes=constraint-elimination -S | FileCheck %s
3+
4+
define i32 @foo() {
5+
; CHECK-LABEL: define i32 @foo() {
6+
; CHECK-NEXT: init:
7+
; CHECK-NEXT: br label %[[OUTER_LOOP_CONTROL:.*]]
8+
; CHECK: outer.loop.control:
9+
; CHECK-NEXT: [[X_0:%.*]] = phi i32 [ 0, [[INIT:%.*]] ], [ [[X_OUTER:%.*]], %[[OUTER_LOOP_INC:.*]] ]
10+
; CHECK-NEXT: [[TMP0:%.*]] = icmp slt i32 [[X_0]], 10
11+
; CHECK-NEXT: br i1 [[TMP0]], label %[[INNER_LOOP_CONTROL:.*]], label %[[EXIT:.*]]
12+
; CHECK: inner.loop.control:
13+
; CHECK-NEXT: [[X_1:%.*]] = phi i32 [ [[X_0]], %[[OUTER_LOOP_CONTROL]] ], [ [[X_INNER:%.*]], %[[INNER_LOOP_BODY:.*]] ]
14+
; CHECK-NEXT: br i1 false, label %[[INNER_LOOP_BODY]], label %[[OUTER_LOOP_INC]]
15+
; CHECK: inner.loop.body:
16+
; CHECK-NEXT: [[X_INNER]] = add nsw i32 [[X_1]], -1
17+
; CHECK-NEXT: br label %[[INNER_LOOP_CONTROL]]
18+
; CHECK: outer.loop.inc:
19+
; CHECK-NEXT: [[X_OUTER]] = add nsw i32 [[X_1]], 2
20+
; CHECK-NEXT: br label %[[OUTER_LOOP_CONTROL]]
21+
; CHECK: exit:
22+
; CHECK-NEXT: ret i32 [[X_0]]
23+
;
24+
init:
25+
br label %outer.loop.control
26+
27+
outer.loop.control: ; preds = %init, %outer.loop.inc
28+
%x.0 = phi i32 [ 0, %init ], [ %x.outer, %outer.loop.inc ]
29+
%0 = icmp slt i32 %x.0, 10
30+
br i1 %0, label %inner.loop.control, label %exit
31+
32+
inner.loop.control: ; preds = %outer.loop.control, %inner.loop.body
33+
%x.1 = phi i32 [ %x.0, %outer.loop.control ], [ %x.inner, %inner.loop.body ]
34+
%1 = icmp sgt i32 %x.1, 20
35+
br i1 %1, label %inner.loop.body, label %outer.loop.inc
36+
37+
inner.loop.body: ; preds = %inner.loop.control
38+
%x.inner = add nsw i32 %x.1, -1
39+
br label %inner.loop.control
40+
41+
outer.loop.inc: ; preds = %inner.loop.control
42+
%x.outer = add nsw i32 %x.1, 2
43+
br label %outer.loop.control
44+
45+
exit: ; preds = %1
46+
ret i32 %x.0
47+
}

0 commit comments

Comments
 (0)