Skip to content

Commit f2a3e2b

Browse files
committed
[UnifyLoopExits] Precommit test with phis selecting only undef
1 parent b446f90 commit f2a3e2b

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt < %s -passes='unify-loop-exits' -S | FileCheck %s
3+
4+
define fastcc void @undef_phi(i64 %i5247, i1 %i4530, i1 %i4936.not) {
5+
; CHECK-LABEL: define fastcc void @undef_phi(
6+
; CHECK-SAME: i64 [[I5247:%.*]], i1 [[I4530:%.*]], i1 [[I4936_NOT:%.*]]) {
7+
; CHECK-NEXT: [[BB:.*:]]
8+
; CHECK-NEXT: br label %[[MBB3932:.*]]
9+
; CHECK: [[MBB3932]]:
10+
; CHECK-NEXT: br label %[[MBB4454:.*]]
11+
; CHECK: [[MBB4321:.*]]:
12+
; CHECK-NEXT: [[TMP0:%.*]] = trunc i64 [[I5247]] to i32
13+
; CHECK-NEXT: [[I5290:%.*]] = icmp eq i32 [[TMP0]], 0
14+
; CHECK-NEXT: br i1 [[I5290]], label %[[MBB3932]], label %[[LOOP_EXIT_GUARD:.*]]
15+
; CHECK: [[MBB4454]]:
16+
; CHECK-NEXT: br i1 [[I4530]], label %[[MBB4535:.*]], label %[[LOOP_EXIT_GUARD1:.*]]
17+
; CHECK: [[MBB4531:.*]]:
18+
; CHECK-NEXT: ret void
19+
; CHECK: [[MBB4535]]:
20+
; CHECK-NEXT: br i1 [[I4936_NOT]], label %[[LOOP_EXIT_GUARD1]], label %[[MBB4454]]
21+
; CHECK: [[MBB5291:.*]]:
22+
; CHECK-NEXT: [[I5293:%.*]] = insertvalue [2 x i32] zeroinitializer, i32 [[DOTMOVED:%.*]], 1
23+
; CHECK-NEXT: store volatile [2 x i32] [[I5293]], ptr addrspace(5) null, align 4
24+
; CHECK-NEXT: ret void
25+
; CHECK: [[LOOP_EXIT_GUARD]]:
26+
; CHECK-NEXT: [[DOTMOVED]] = phi i32 [ [[TMP0]], %[[MBB4321]] ], [ [[DOTMOVED_MOVED:%.*]], %[[LOOP_EXIT_GUARD1]] ]
27+
; CHECK-NEXT: [[GUARD_MBB4531:%.*]] = phi i1 [ false, %[[MBB4321]] ], [ [[GUARD_MBB4531_MOVED:%.*]], %[[LOOP_EXIT_GUARD1]] ]
28+
; CHECK-NEXT: br i1 [[GUARD_MBB4531]], label %[[MBB4531]], label %[[MBB5291]]
29+
; CHECK: [[LOOP_EXIT_GUARD1]]:
30+
; CHECK-NEXT: [[GUARD_MBB4531_MOVED]] = phi i1 [ true, %[[MBB4454]] ], [ undef, %[[MBB4535]] ]
31+
; CHECK-NEXT: [[DOTMOVED_MOVED]] = phi i32 [ poison, %[[MBB4454]] ], [ undef, %[[MBB4535]] ]
32+
; CHECK-NEXT: [[GUARD_LOOP_EXIT_GUARD:%.*]] = phi i1 [ true, %[[MBB4454]] ], [ false, %[[MBB4535]] ]
33+
; CHECK-NEXT: br i1 [[GUARD_LOOP_EXIT_GUARD]], label %[[LOOP_EXIT_GUARD]], label %[[MBB4321]]
34+
;
35+
mbb:
36+
br label %mbb3932
37+
38+
mbb3932: ; preds = %mbb4321, %mbb
39+
br label %mbb4454
40+
41+
mbb4321: ; preds = %mbb4535
42+
%0 = trunc i64 %i5247 to i32
43+
%i5290 = icmp eq i32 %0, 0
44+
br i1 %i5290, label %mbb3932, label %mbb5291
45+
46+
mbb4454: ; preds = %mbb4535, %mbb3932
47+
br i1 %i4530, label %mbb4535, label %mbb4531
48+
49+
mbb4531: ; preds = %mbb4454
50+
ret void
51+
52+
mbb4535: ; preds = %mbb4454
53+
br i1 %i4936.not, label %mbb4321, label %mbb4454
54+
55+
mbb5291: ; preds = %mbb4321
56+
%i5293 = insertvalue [2 x i32] zeroinitializer, i32 %0, 1
57+
store volatile [2 x i32] %i5293, ptr addrspace(5) null, align 4
58+
ret void
59+
}

0 commit comments

Comments
 (0)