Skip to content

Commit f51d9f6

Browse files
committed
Forgto to add test-case
1 parent e72522a commit f51d9f6

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
2+
; RUN: opt < %s -passes=loop-interchange -loop-interchange-profitabilities=ignore -cache-line-size=64 -verify-dom-info -verify-loop-info -verify-scev -verify-loop-lcssa -S | FileCheck %s
3+
4+
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
5+
6+
; Test case for issue: https://github.com/llvm/llvm-project/issues/163954
7+
8+
define void @test() {
9+
; CHECK-LABEL: define void @test() {
10+
; CHECK-NEXT: [[ENTRY:.*]]:
11+
; CHECK-NEXT: br label %[[OUTER_HEADER:.*]]
12+
; CHECK: [[OUTER_HEADER]]:
13+
; CHECK-NEXT: [[I:%.*]] = phi i8 [ 0, %[[ENTRY]] ], [ [[DOTLCSSA:%.*]], %[[OUTER_LATCH:.*]] ]
14+
; CHECK-NEXT: br label %[[INNER_HEADER:.*]]
15+
; CHECK: [[INNER_HEADER]]:
16+
; CHECK-NEXT: [[J:%.*]] = phi i64 [ 0, %[[OUTER_HEADER]] ], [ [[J_NEXT:%.*]], %[[INNER_LATCH:.*]] ]
17+
; CHECK-NEXT: [[TMP0:%.*]] = phi i8 [ [[I]], %[[OUTER_HEADER]] ], [ [[TMP1:%.*]], %[[INNER_LATCH]] ]
18+
; CHECK-NEXT: br label %[[INNER_BODY:.*]]
19+
; CHECK: [[INNER_BODY]]:
20+
; CHECK-NEXT: br i1 true, label %[[INNER_LATCH]], label %[[INNER_BODY]]
21+
; CHECK: [[INNER_LATCH]]:
22+
; CHECK-NEXT: [[TMP1]] = or i8 [[TMP0]], 0
23+
; CHECK-NEXT: [[J_NEXT]] = add i64 [[J]], 1
24+
; CHECK-NEXT: br i1 true, label %[[OUTER_LATCH]], label %[[INNER_HEADER]]
25+
; CHECK: [[OUTER_LATCH]]:
26+
; CHECK-NEXT: [[DOTLCSSA]] = phi i8 [ [[TMP1]], %[[INNER_LATCH]] ]
27+
; CHECK-NEXT: br i1 true, label %[[EXIT:.*]], label %[[OUTER_HEADER]]
28+
; CHECK: [[EXIT]]:
29+
; CHECK-NEXT: ret void
30+
;
31+
entry:
32+
br label %outer.header
33+
34+
outer.header:
35+
%i = phi i8 [ 0, %entry ], [ %1, %outer.latch ]
36+
br label %inner.header
37+
38+
inner.header:
39+
%j = phi i64 [ 0, %outer.header ], [ %j.next, %inner.latch ]
40+
%0 = phi i8 [ %i, %outer.header ], [ %1, %inner.latch ]
41+
br label %inner.body
42+
43+
inner.body:
44+
br i1 true, label %inner.latch, label %inner.body ; another (self) loop, but never taken
45+
46+
inner.latch:
47+
%1 = or i8 %0, 0
48+
%j.next = add i64 %j, 1
49+
br i1 true, label %outer.latch, label %inner.header
50+
51+
outer.latch:
52+
br i1 true, label %exit, label %outer.header
53+
54+
exit:
55+
ret void
56+
}

0 commit comments

Comments
 (0)