Skip to content

Commit b1e9c43

Browse files
committed
[Test] Add test for crash in IRCE when IV is AddRec for another loop
This adds a test for llvm/llvm-project#58912. IRCE crashes when it tries to check whether it is possible to safely calculate the bounds of a loop with IV AddRec which is in another loop.
1 parent b7162e1 commit b1e9c43

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
; RUN: opt -S -irce -irce-print-changed-loops=true < %s | FileCheck %s
2+
3+
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
4+
target triple = "x86_64-unknown-linux-gnu"
5+
6+
; REQUIRES: asserts
7+
; XFAIL: *
8+
9+
define void @test() {
10+
bb:
11+
br label %outer_header
12+
13+
outer_latch: ; preds = %inner_exit
14+
%tmp = or i32 %tmp5, 1
15+
%tmp2 = add nuw nsw i32 %tmp5, 1
16+
%tmp3 = icmp eq i32 %tmp8, 0
17+
br i1 %tmp3, label %ret2, label %outer_header
18+
19+
outer_header: ; preds = %outer_latch, %bb
20+
%tmp5 = phi i32 [ 0, %bb ], [ %tmp2, %outer_latch ]
21+
br label %inner_header
22+
23+
inner_exit: ; preds = %inner_header
24+
%tmp12.lcssa = phi i32 [ %tmp12, %inner_header ]
25+
%tmp7 = or i32 %tmp12.lcssa, %tmp5
26+
%tmp8 = add nuw i32 %tmp12.lcssa, %tmp5
27+
%tmp9 = icmp ult i32 %tmp5, 0
28+
br i1 %tmp9, label %outer_latch, label %ret1
29+
30+
ret1: ; preds = %inner_exit
31+
ret void
32+
33+
inner_header: ; preds = %inner_header, %outer_header
34+
%tmp12 = phi i32 [ %tmp14, %inner_header ], [ 0, %outer_header ]
35+
%tmp13 = or i32 %tmp12, 1
36+
%tmp14 = add nuw nsw i32 %tmp12, 1
37+
br i1 true, label %inner_exit, label %inner_header
38+
39+
ret2: ; preds = %outer_latch
40+
ret void
41+
}

0 commit comments

Comments
 (0)