[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / NewGVN / 2007-07-30-PredIDom.ll
blobddb1e9a674c8b51560b9c38c6e14984eb9819f85
1 ; RUN: opt < %s -newgvn | llvm-dis
3         %"struct.Block::$_16" = type { i32 }
4         %struct.Exp = type { %struct.Exp_*, i32, i32, i32, %struct.Exp*, %struct.Exp*, %"struct.Exp::$_10", %"struct.Block::$_16", %"struct.Exp::$_12" }
5         %"struct.Exp::$_10" = type { %struct.Exp* }
6         %"struct.Exp::$_12" = type { %struct.Exp** }
7         %struct.Exp_ = type { i32, i32, i32, i32, %struct.Id* }
8         %struct.Id = type { i8*, i32, i32, i32, %"struct.Id::$_13" }
9         %"struct.Id::$_13" = type { double }
11 define i8* @_ZN3Exp8toStringEj(%struct.Exp* %this, i32 %nextpc) {
12 entry:
13         switch i32 0, label %bb970 [
14                  i32 1, label %bb
15                  i32 2, label %bb39
16                  i32 3, label %bb195
17                  i32 4, label %bb270
18                  i32 5, label %bb418
19                  i32 6, label %bb633
20                  i32 7, label %bb810
21                  i32 8, label %bb882
22                  i32 9, label %bb925
23         ]
25 bb:             ; preds = %entry
26         store i8* null, i8** null
27         br label %return
29 bb39:           ; preds = %entry
30         br i1 false, label %cond_true, label %cond_false132
32 cond_true:              ; preds = %bb39
33         br i1 false, label %cond_true73, label %cond_false
35 cond_true73:            ; preds = %cond_true
36         br i1 false, label %cond_true108, label %cond_next
38 cond_true108:           ; preds = %cond_true73
39         br label %cond_next
41 cond_next:              ; preds = %cond_true108, %cond_true73
42         br label %cond_next131
44 cond_false:             ; preds = %cond_true
45         br label %cond_next131
47 cond_next131:           ; preds = %cond_false, %cond_next
48         br label %cond_next141
50 cond_false132:          ; preds = %bb39
51         br label %cond_next141
53 cond_next141:           ; preds = %cond_false132, %cond_next131
54         br i1 false, label %cond_true169, label %cond_false175
56 cond_true169:           ; preds = %cond_next141
57         br label %cond_next181
59 cond_false175:          ; preds = %cond_next141
60         br label %cond_next181
62 cond_next181:           ; preds = %cond_false175, %cond_true169
63         br i1 false, label %cond_true189, label %cond_next191
65 cond_true189:           ; preds = %cond_next181
66         br label %cond_next191
68 cond_next191:           ; preds = %cond_true189, %cond_next181
69         store i8* null, i8** null
70         br label %return
72 bb195:          ; preds = %entry
73         br i1 false, label %cond_true248, label %cond_false250
75 cond_true248:           ; preds = %bb195
76         br label %cond_next252
78 cond_false250:          ; preds = %bb195
79         br label %cond_next252
81 cond_next252:           ; preds = %cond_false250, %cond_true248
82         br i1 false, label %cond_true265, label %cond_next267
84 cond_true265:           ; preds = %cond_next252
85         br label %cond_next267
87 cond_next267:           ; preds = %cond_true265, %cond_next252
88         store i8* null, i8** null
89         br label %return
91 bb270:          ; preds = %entry
92         br i1 false, label %cond_true338, label %cond_false340
94 cond_true338:           ; preds = %bb270
95         br label %cond_next342
97 cond_false340:          ; preds = %bb270
98         br label %cond_next342
100 cond_next342:           ; preds = %cond_false340, %cond_true338
101         br i1 false, label %cond_true362, label %cond_false364
103 cond_true362:           ; preds = %cond_next342
104         br label %cond_next366
106 cond_false364:          ; preds = %cond_next342
107         br label %cond_next366
109 cond_next366:           ; preds = %cond_false364, %cond_true362
110         br i1 false, label %cond_true393, label %cond_next395
112 cond_true393:           ; preds = %cond_next366
113         br label %cond_next395
115 cond_next395:           ; preds = %cond_true393, %cond_next366
116         br i1 false, label %cond_true406, label %cond_next408
118 cond_true406:           ; preds = %cond_next395
119         br label %cond_next408
121 cond_next408:           ; preds = %cond_true406, %cond_next395
122         br i1 false, label %cond_true413, label %cond_next415
124 cond_true413:           ; preds = %cond_next408
125         br label %cond_next415
127 cond_next415:           ; preds = %cond_true413, %cond_next408
128         store i8* null, i8** null
129         br label %return
131 bb418:          ; preds = %entry
132         br i1 false, label %cond_true512, label %cond_false514
134 cond_true512:           ; preds = %bb418
135         br label %cond_next516
137 cond_false514:          ; preds = %bb418
138         br label %cond_next516
140 cond_next516:           ; preds = %cond_false514, %cond_true512
141         br i1 false, label %cond_true536, label %cond_false538
143 cond_true536:           ; preds = %cond_next516
144         br label %cond_next540
146 cond_false538:          ; preds = %cond_next516
147         br label %cond_next540
149 cond_next540:           ; preds = %cond_false538, %cond_true536
150         br i1 false, label %cond_true560, label %cond_false562
152 cond_true560:           ; preds = %cond_next540
153         br label %cond_next564
155 cond_false562:          ; preds = %cond_next540
156         br label %cond_next564
158 cond_next564:           ; preds = %cond_false562, %cond_true560
159         br i1 false, label %cond_true597, label %cond_next599
161 cond_true597:           ; preds = %cond_next564
162         br label %cond_next599
164 cond_next599:           ; preds = %cond_true597, %cond_next564
165         br i1 false, label %cond_true614, label %cond_next616
167 cond_true614:           ; preds = %cond_next599
168         br label %cond_next616
170 cond_next616:           ; preds = %cond_true614, %cond_next599
171         br i1 false, label %cond_true621, label %cond_next623
173 cond_true621:           ; preds = %cond_next616
174         br label %cond_next623
176 cond_next623:           ; preds = %cond_true621, %cond_next616
177         br i1 false, label %cond_true628, label %cond_next630
179 cond_true628:           ; preds = %cond_next623
180         br label %cond_next630
182 cond_next630:           ; preds = %cond_true628, %cond_next623
183         store i8* null, i8** null
184         br label %return
186 bb633:          ; preds = %entry
187         br i1 false, label %cond_true667, label %cond_next669
189 cond_true667:           ; preds = %bb633
190         br label %cond_next669
192 cond_next669:           ; preds = %cond_true667, %bb633
193         br i1 false, label %cond_true678, label %cond_next791
195 cond_true678:           ; preds = %cond_next669
196         br label %bb735
198 bb679:          ; preds = %bb735
199         br i1 false, label %cond_true729, label %cond_next731
201 cond_true729:           ; preds = %bb679
202         br label %cond_next731
204 cond_next731:           ; preds = %cond_true729, %bb679
205         br label %bb735
207 bb735:          ; preds = %cond_next731, %cond_true678
208         br i1 false, label %bb679, label %bb743
210 bb743:          ; preds = %bb735
211         br i1 false, label %cond_true788, label %cond_next790
213 cond_true788:           ; preds = %bb743
214         br label %cond_next790
216 cond_next790:           ; preds = %cond_true788, %bb743
217         br label %cond_next791
219 cond_next791:           ; preds = %cond_next790, %cond_next669
220         br i1 false, label %cond_true805, label %cond_next807
222 cond_true805:           ; preds = %cond_next791
223         br label %cond_next807
225 cond_next807:           ; preds = %cond_true805, %cond_next791
226         store i8* null, i8** null
227         br label %return
229 bb810:          ; preds = %entry
230         br i1 false, label %cond_true870, label %cond_next872
232 cond_true870:           ; preds = %bb810
233         br label %cond_next872
235 cond_next872:           ; preds = %cond_true870, %bb810
236         br i1 false, label %cond_true877, label %cond_next879
238 cond_true877:           ; preds = %cond_next872
239         br label %cond_next879
241 cond_next879:           ; preds = %cond_true877, %cond_next872
242         store i8* null, i8** null
243         br label %return
245 bb882:          ; preds = %entry
246         br i1 false, label %cond_true920, label %cond_next922
248 cond_true920:           ; preds = %bb882
249         br label %cond_next922
251 cond_next922:           ; preds = %cond_true920, %bb882
252         store i8* null, i8** null
253         br label %return
255 bb925:          ; preds = %entry
256         br i1 false, label %cond_true965, label %cond_next967
258 cond_true965:           ; preds = %bb925
259         br label %cond_next967
261 cond_next967:           ; preds = %cond_true965, %bb925
262         store i8* null, i8** null
263         br label %return
265 bb970:          ; preds = %entry
266         unreachable
267                 ; No predecessors!
268         store i8* null, i8** null
269         br label %return
271 return:         ; preds = %0, %cond_next967, %cond_next922, %cond_next879, %cond_next807, %cond_next630, %cond_next415, %cond_next267, %cond_next191, %bb
272         %retval980 = load i8*, i8** null                ; <i8*> [#uses=1]
273         ret i8* %retval980