@@ -37,9 +37,8 @@ define void @exiting-block(i1 %PredH1, i1 %PredB2, i1 %PredB1, i1 %PredH2) {
37
37
; CHECK-NEXT: br i1 [[PREDB2_INV]], label [[L2:%.*]], label [[FLOW2:%.*]]
38
38
; CHECK: Flow:
39
39
; CHECK-NEXT: [[TMP2:%.*]] = phi i1 [ false, [[FLOW2]] ], [ true, [[H2]] ]
40
- ; CHECK-NEXT: [[TMP3:%.*]] = phi i1 [ false, [[FLOW2]] ], [ undef, [[H2]] ]
41
- ; CHECK-NEXT: [[TMP4:%.*]] = phi i1 [ [[TMP7:%.*]], [[FLOW2]] ], [ true, [[H2]] ]
42
- ; CHECK-NEXT: br i1 [[TMP4]], label [[LOOP_EXIT_GUARD1:%.*]], label [[H2]]
40
+ ; CHECK-NEXT: [[TMP3:%.*]] = phi i1 [ [[TMP5:%.*]], [[FLOW2]] ], [ true, [[H2]] ]
41
+ ; CHECK-NEXT: br i1 [[TMP3]], label [[LOOP_EXIT_GUARD1:%.*]], label [[H2]]
43
42
; CHECK: L2:
44
43
; CHECK-NEXT: br label [[FLOW2]]
45
44
; CHECK: L1:
@@ -51,18 +50,17 @@ define void @exiting-block(i1 %PredH1, i1 %PredB2, i1 %PredB1, i1 %PredH2) {
51
50
; CHECK: exit:
52
51
; CHECK-NEXT: ret void
53
52
; CHECK: Flow5:
54
- ; CHECK-NEXT: [[TMP5:%.*]] = phi i1 [ undef, [[L1:%.*]] ], [ [[TMP3]], [[LOOP_EXIT_GUARD1]] ]
55
- ; CHECK-NEXT: [[TMP6:%.*]] = phi i1 [ false, [[L1]] ], [ true, [[LOOP_EXIT_GUARD1]] ]
53
+ ; CHECK-NEXT: [[TMP4:%.*]] = phi i1 [ false, [[L1:%.*]] ], [ true, [[LOOP_EXIT_GUARD1]] ]
56
54
; CHECK-NEXT: br label [[FLOW4]]
57
55
; CHECK: loop.exit.guard:
58
- ; CHECK-NEXT: br i1 [[TMP8 :%.*]], label [[C:%.*]], label [[EXIT]]
56
+ ; CHECK-NEXT: br i1 [[TMP6 :%.*]], label [[C:%.*]], label [[EXIT]]
59
57
; CHECK: Flow2:
60
- ; CHECK-NEXT: [[TMP7 ]] = phi i1 [ false, [[L2]] ], [ true, [[B2]] ]
58
+ ; CHECK-NEXT: [[TMP5 ]] = phi i1 [ false, [[L2]] ], [ true, [[B2]] ]
61
59
; CHECK-NEXT: br label [[FLOW]]
62
60
; CHECK: Flow4:
63
- ; CHECK-NEXT: [[TMP8 ]] = phi i1 [ [[TMP5]] , [[FLOW5]] ], [ [[TMP0]], [[FLOW3]] ]
64
- ; CHECK-NEXT: [[TMP9 :%.*]] = phi i1 [ [[TMP6 ]], [[FLOW5]] ], [ true, [[FLOW3]] ]
65
- ; CHECK-NEXT: br i1 [[TMP9 ]], label [[LOOP_EXIT_GUARD:%.*]], label [[H1]]
61
+ ; CHECK-NEXT: [[TMP6 ]] = phi i1 [ false , [[FLOW5]] ], [ [[TMP0]], [[FLOW3]] ]
62
+ ; CHECK-NEXT: [[TMP7 :%.*]] = phi i1 [ [[TMP4 ]], [[FLOW5]] ], [ true, [[FLOW3]] ]
63
+ ; CHECK-NEXT: br i1 [[TMP7 ]], label [[LOOP_EXIT_GUARD:%.*]], label [[H1]]
66
64
; CHECK: loop.exit.guard1:
67
65
; CHECK-NEXT: br i1 [[TMP2]], label [[L1]], label [[FLOW5]]
68
66
;
@@ -115,39 +113,37 @@ define void @incorrect-backedge(i1 %PredH2, i1 %PredH3, i1 %PredL2, i1 %PredL13,
115
113
; CHECK: L2:
116
114
; CHECK-NEXT: br i1 [[PREDL2_INV]], label [[L13:%.*]], label [[FLOW3:%.*]]
117
115
; CHECK: Flow:
118
- ; CHECK-NEXT: [[TMP0:%.*]] = phi i1 [ [[TMP7:%.*]], [[FLOW3]] ], [ true, [[H3]] ]
119
- ; CHECK-NEXT: [[TMP1:%.*]] = phi i1 [ [[TMP8:%.*]], [[FLOW3]] ], [ false, [[H3]] ]
120
- ; CHECK-NEXT: [[TMP2:%.*]] = phi i1 [ [[TMP8]], [[FLOW3]] ], [ true, [[H3]] ]
121
- ; CHECK-NEXT: [[TMP3:%.*]] = phi i1 [ [[TMP9:%.*]], [[FLOW3]] ], [ true, [[H3]] ]
122
- ; CHECK-NEXT: br i1 [[TMP3]], label [[LOOP_EXIT_GUARD2:%.*]], label [[H3]]
116
+ ; CHECK-NEXT: [[TMP0:%.*]] = phi i1 [ [[TMP6:%.*]], [[FLOW3]] ], [ true, [[H3]] ]
117
+ ; CHECK-NEXT: [[TMP1:%.*]] = phi i1 [ false, [[FLOW3]] ], [ true, [[H3]] ]
118
+ ; CHECK-NEXT: [[TMP2:%.*]] = phi i1 [ [[TMP7:%.*]], [[FLOW3]] ], [ true, [[H3]] ]
119
+ ; CHECK-NEXT: br i1 [[TMP2]], label [[LOOP_EXIT_GUARD2:%.*]], label [[H3]]
123
120
; CHECK: L13:
124
121
; CHECK-NEXT: br label [[FLOW3]]
125
122
; CHECK: Flow5:
126
- ; CHECK-NEXT: [[TMP4 :%.*]] = phi i1 [ [[TMP10 :%.*]], [[LOOP_EXIT_GUARD1:%.*]] ], [ true, [[LOOP_EXIT_GUARD:%.*]] ]
127
- ; CHECK-NEXT: [[TMP5 :%.*]] = phi i1 [ false, [[LOOP_EXIT_GUARD1]] ], [ true, [[LOOP_EXIT_GUARD]] ]
128
- ; CHECK-NEXT: br i1 [[TMP5 ]], label [[L1:%.*]], label [[FLOW6:%.*]]
123
+ ; CHECK-NEXT: [[TMP3 :%.*]] = phi i1 [ [[TMP8 :%.*]], [[LOOP_EXIT_GUARD1:%.*]] ], [ true, [[LOOP_EXIT_GUARD:%.*]] ]
124
+ ; CHECK-NEXT: [[TMP4 :%.*]] = phi i1 [ false, [[LOOP_EXIT_GUARD1]] ], [ true, [[LOOP_EXIT_GUARD]] ]
125
+ ; CHECK-NEXT: br i1 [[TMP4 ]], label [[L1:%.*]], label [[FLOW6:%.*]]
129
126
; CHECK: L1:
130
127
; CHECK-NEXT: br label [[FLOW6]]
131
128
; CHECK: Flow6:
132
- ; CHECK-NEXT: [[TMP6 :%.*]] = phi i1 [ [[PREDL1:%.*]], [[L1]] ], [ [[TMP4 ]], [[FLOW5:%.*]] ]
133
- ; CHECK-NEXT: br i1 [[TMP6 ]], label [[EXIT:%.*]], label [[H1]]
129
+ ; CHECK-NEXT: [[TMP5 :%.*]] = phi i1 [ [[PREDL1:%.*]], [[L1]] ], [ [[TMP3 ]], [[FLOW5:%.*]] ]
130
+ ; CHECK-NEXT: br i1 [[TMP5 ]], label [[EXIT:%.*]], label [[H1]]
134
131
; CHECK: exit:
135
132
; CHECK-NEXT: ret void
136
133
; CHECK: loop.exit.guard:
137
134
; CHECK-NEXT: br i1 [[DOTINV:%.*]], label [[LOOP_EXIT_GUARD1]], label [[FLOW5]]
138
135
; CHECK: loop.exit.guard1:
139
136
; CHECK-NEXT: br label [[FLOW5]]
140
137
; CHECK: Flow3:
141
- ; CHECK-NEXT: [[TMP7]] = phi i1 [ true, [[L13]] ], [ false, [[L2]] ]
142
- ; CHECK-NEXT: [[TMP8]] = phi i1 [ false, [[L13]] ], [ undef, [[L2]] ]
143
- ; CHECK-NEXT: [[TMP9]] = phi i1 [ [[PREDL13_INV]], [[L13]] ], [ true, [[L2]] ]
138
+ ; CHECK-NEXT: [[TMP6]] = phi i1 [ true, [[L13]] ], [ false, [[L2]] ]
139
+ ; CHECK-NEXT: [[TMP7]] = phi i1 [ [[PREDL13_INV]], [[L13]] ], [ true, [[L2]] ]
144
140
; CHECK-NEXT: br label [[FLOW]]
145
141
; CHECK: Flow4:
146
- ; CHECK-NEXT: [[TMP10 ]] = phi i1 [ [[TMP2 ]], [[LOOP_EXIT_GUARD2]] ], [ false, [[H2]] ]
147
- ; CHECK-NEXT: [[TMP11 :%.*]] = phi i1 [ [[TMP1]] , [[LOOP_EXIT_GUARD2]] ], [ true, [[H2]] ]
148
- ; CHECK-NEXT: [[TMP12 :%.*]] = phi i1 [ [[TMP0]], [[LOOP_EXIT_GUARD2]] ], [ true, [[H2]] ]
149
- ; CHECK-NEXT: [[DOTINV]] = xor i1 [[TMP11 ]], true
150
- ; CHECK-NEXT: br i1 [[TMP12 ]], label [[LOOP_EXIT_GUARD]], label [[H2]]
142
+ ; CHECK-NEXT: [[TMP8 ]] = phi i1 [ [[TMP1 ]], [[LOOP_EXIT_GUARD2]] ], [ false, [[H2]] ]
143
+ ; CHECK-NEXT: [[TMP9 :%.*]] = phi i1 [ false , [[LOOP_EXIT_GUARD2]] ], [ true, [[H2]] ]
144
+ ; CHECK-NEXT: [[TMP10 :%.*]] = phi i1 [ [[TMP0]], [[LOOP_EXIT_GUARD2]] ], [ true, [[H2]] ]
145
+ ; CHECK-NEXT: [[DOTINV]] = xor i1 [[TMP9 ]], true
146
+ ; CHECK-NEXT: br i1 [[TMP10 ]], label [[LOOP_EXIT_GUARD]], label [[H2]]
151
147
; CHECK: loop.exit.guard2:
152
148
; CHECK-NEXT: br label [[FLOW4]]
153
149
;
0 commit comments