@@ -8,16 +8,16 @@ define void @test(i1 %c) {
8
8
; CHECK-NEXT: bb16:
9
9
; CHECK-NEXT: br i1 [[C:%.*]], label [[BB17:%.*]], label [[BB24:%.*]]
10
10
; CHECK: bb17:
11
- ; CHECK-NEXT: [[TMP0 :%.*]] = phi i8* [ [[TMP1 :%.*]], [[BB47:%.*]] ], [ undef, [[BB16:%.*]] ]
12
- ; CHECK-NEXT: store i8* [[TMP0 ]], i8** undef, align 8
11
+ ; CHECK-NEXT: [[I :%.*]] = phi i8* [ [[TMP0 :%.*]], [[BB47:%.*]] ], [ undef, [[BB16:%.*]] ]
12
+ ; CHECK-NEXT: store i8* [[I ]], i8** undef, align 8
13
13
; CHECK-NEXT: ret void
14
14
; CHECK: bb24:
15
15
; CHECK-NEXT: br i1 [[C]], label [[BB44:%.*]], label [[BB49:%.*]]
16
16
; CHECK: bb44:
17
17
; CHECK-NEXT: [[TMP467:%.*]] = load i8*, i8** inttoptr (i64 16 to i8**), align 16
18
18
; CHECK-NEXT: br label [[BB47]]
19
19
; CHECK: bb47:
20
- ; CHECK-NEXT: [[TMP1 ]] = phi i8* [ [[TMP2 :%.*]], [[BB150:%.*]] ], [ [[TMP1221:%.*]], [[BB119:%.*]] ], [ [[TMP1032:%.*]], [[BB101:%.*]] ], [ [[TMP933:%.*]], [[BB91:%.*]] ], [ [[TMP834:%.*]], [[BB81:%.*]] ], [ [[TMP705:%.*]], [[BB67:%.*]] ], [ [[TMP586:%.*]], [[BB56:%.*]] ], [ [[TMP467]], [[BB44]] ]
20
+ ; CHECK-NEXT: [[TMP0 ]] = phi i8* [ [[TMP1 :%.*]], [[BB150:%.*]] ], [ [[TMP1221:%.*]], [[BB119:%.*]] ], [ [[TMP1032:%.*]], [[BB101:%.*]] ], [ [[TMP933:%.*]], [[BB91:%.*]] ], [ [[TMP834:%.*]], [[BB81:%.*]] ], [ [[TMP705:%.*]], [[BB67:%.*]] ], [ [[TMP586:%.*]], [[BB56:%.*]] ], [ [[TMP467]], [[BB44]] ]
21
21
; CHECK-NEXT: br label [[BB17]]
22
22
; CHECK: bb49:
23
23
; CHECK-NEXT: br i1 [[C]], label [[BB56]], label [[BB59:%.*]]
@@ -55,95 +55,95 @@ define void @test(i1 %c) {
55
55
; CHECK-NEXT: [[TMP1499:%.*]] = load i8*, i8** inttoptr (i64 16 to i8**), align 16
56
56
; CHECK-NEXT: br label [[BB150]]
57
57
; CHECK: bb150:
58
- ; CHECK-NEXT: [[TMP2 ]] = phi i8* [ [[TMP1848:%.*]], [[BB152]] ], [ [[TMP1499]], [[BB147]] ]
58
+ ; CHECK-NEXT: [[TMP1 ]] = phi i8* [ [[TMP1848:%.*]], [[BB152]] ], [ [[TMP1499]], [[BB147]] ]
59
59
; CHECK-NEXT: br label [[BB47]]
60
60
; CHECK: bb152:
61
61
; CHECK-NEXT: [[TMP1848]] = load i8*, i8** inttoptr (i64 16 to i8**), align 16
62
62
; CHECK-NEXT: store i1 true, i1* poison, align 1
63
63
; CHECK-NEXT: br label [[BB150]]
64
64
;
65
- bb16: ; preds = %bb
65
+ bb16:
66
66
br i1 %c , label %bb17 , label %bb24
67
67
68
- bb17: ; preds = %bb47, %bb17
69
- %0 = phi i8* [ %1 , %bb47 ], [ undef , %bb16 ]
70
- store i8* %0 , i8** undef , align 8
68
+ bb17: ; preds = %bb47, %bb16
69
+ %i = phi i8* [ %i1 , %bb47 ], [ undef , %bb16 ]
70
+ store i8* %i , i8** undef , align 8
71
71
ret void
72
72
73
- bb24: ; preds = %bb24
73
+ bb24: ; preds = %bb16
74
74
br i1 %c , label %bb44 , label %bb49
75
75
76
- bb44: ; preds = %bb43
76
+ bb44: ; preds = %bb24
77
77
%tmp46 = load i64* , i64** inttoptr (i64 16 to i64** ), align 16
78
78
br label %bb47
79
79
80
80
bb47: ; preds = %bb150, %bb119, %bb101, %bb91, %bb81, %bb67, %bb56, %bb44
81
81
%.in1 = phi i64* [ %.in , %bb150 ], [ %tmp122 , %bb119 ], [ %tmp103 , %bb101 ], [ %tmp93 , %bb91 ], [ %tmp83 , %bb81 ], [ %tmp70 , %bb67 ], [ %tmp58 , %bb56 ], [ %tmp46 , %bb44 ]
82
- %1 = bitcast i64* %.in1 to i8*
82
+ %i1 = bitcast i64* %.in1 to i8*
83
83
br label %bb17
84
84
85
- bb49: ; preds = %bb49
85
+ bb49: ; preds = %bb24
86
86
br i1 %c , label %bb56 , label %bb59
87
87
88
- bb56: ; preds = %bb55
88
+ bb56: ; preds = %bb49
89
89
%tmp58 = load i64* , i64** inttoptr (i64 16 to i64** ), align 16
90
90
br label %bb47
91
91
92
- bb59: ; preds = %bb59
92
+ bb59: ; preds = %bb49
93
93
br i1 %c , label %bb67 , label %bb71
94
94
95
- bb67: ; preds = %bb66
95
+ bb67: ; preds = %bb59
96
96
%tmp70 = load i64* , i64** inttoptr (i64 16 to i64** ), align 16
97
97
br label %bb47
98
98
99
- bb71: ; preds = %bb71
99
+ bb71: ; preds = %bb59
100
100
br i1 %c , label %bb81 , label %bb84
101
101
102
- bb81: ; preds = %bb80
102
+ bb81: ; preds = %bb71
103
103
%tmp83 = load i64* , i64** inttoptr (i64 16 to i64** ), align 16
104
104
br label %bb47
105
105
106
- bb84: ; preds = %bb84
106
+ bb84: ; preds = %bb71
107
107
br i1 %c , label %bb91 , label %bb94
108
108
109
- bb91: ; preds = %bb90
109
+ bb91: ; preds = %bb84
110
110
%tmp93 = load i64* , i64** inttoptr (i64 16 to i64** ), align 16
111
111
br label %bb47
112
112
113
- bb94: ; preds = %bb94
113
+ bb94: ; preds = %bb84
114
114
br i1 %c , label %bb101 , label %bb104
115
115
116
- bb101: ; preds = %bb100
116
+ bb101: ; preds = %bb94
117
117
%tmp103 = load i64* , i64** inttoptr (i64 16 to i64** ), align 16
118
118
br label %bb47
119
119
120
- bb104: ; preds = %bb104
120
+ bb104: ; preds = %bb94
121
121
br i1 %c , label %bb119 , label %bb123
122
122
123
- bb119: ; preds = %bb118
123
+ bb119: ; preds = %bb104
124
124
%tmp122 = load i64* , i64** inttoptr (i64 16 to i64** ), align 16
125
125
br label %bb47
126
126
127
- bb123: ; preds = %bb123
127
+ bb123: ; preds = %bb104
128
128
br i1 %c , label %bb147 , label %bb152
129
129
130
- bb147: ; preds = %bb146
130
+ bb147: ; preds = %bb123
131
131
%tmp149 = load i64* , i64** inttoptr (i64 16 to i64** ), align 16
132
132
br label %bb150
133
133
134
134
bb150: ; preds = %bb152, %bb147
135
135
%.in = phi i64* [ %tmp184 , %bb152 ], [ %tmp149 , %bb147 ]
136
136
br label %bb47
137
137
138
- bb152: ; preds = %bb146
138
+ bb152: ; preds = %bb123
139
139
%tmp184 = load i64* , i64** inttoptr (i64 16 to i64** ), align 16
140
140
call void undef ()
141
141
br label %bb150
142
142
}
143
143
144
+
144
145
; This used to cause an instcombine loop when the problem above was
145
146
; addressed in a non-robust fashion.
146
-
147
147
%type_1 = type {}
148
148
%type_2 = type {}
149
149
%type_3 = type {}
@@ -177,15 +177,15 @@ while.cond: ; preds = %cond.end144, %entry
177
177
for.cond: ; preds = %while.cond
178
178
br i1 %c , label %cond.true133 , label %cond.false138
179
179
180
- cond.true133: ; preds = %sw.epilog
181
- %0 = load %type_2* , %type_2** undef , align 8
180
+ cond.true133: ; preds = %for.cond
181
+ %i = load %type_2* , %type_2** undef , align 8
182
182
br label %cond.end144
183
183
184
- cond.false138: ; preds = %sw.epilog
185
- %1 = load %type_2* , %type_2** undef , align 8
184
+ cond.false138: ; preds = %for.cond
185
+ %i1 = load %type_2* , %type_2** undef , align 8
186
186
br label %cond.end144
187
187
188
188
cond.end144: ; preds = %cond.false138, %cond.true133
189
- %cond145 = phi %type_2* [ %0 , %cond.true133 ], [ %1 , %cond.false138 ]
189
+ %cond145 = phi %type_2* [ %i , %cond.true133 ], [ %i1 , %cond.false138 ]
190
190
br label %while.cond
191
191
}
0 commit comments