[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / Inline / 2006-07-12-InlinePruneCGUpdate.ll
blobf7fd4e6c851e5f4c0b691742db4b57d10f24893b
1 ; RUN: opt < %s -inline -prune-eh -disable-output -enable-new-pm=0
2 ; PR827
3 @_ZTV8CRjii = internal global [1 x i32 (...)*] [ i32 (...)* @_ZN8CRjii12NlFeeEPN5Jr7sE ]                ; <[1 x i32 (...)*]*> [#uses=0]
5 define internal i32 @_ZN8CRjii12NlFeeEPN5Jr7sE(...) {
6 entry:
7         br i1 false, label %cond_true, label %cond_false179
9 cond_true:              ; preds = %entry
10         br label %bb9
12 bb:             ; preds = %cond_true14
13         br label %bb9
15 bb9:            ; preds = %bb, %cond_true
16         br i1 false, label %cond_true14, label %cond_false
18 cond_true14:            ; preds = %bb9
19         br label %bb
21 cond_false:             ; preds = %bb9
22         br label %bb15
24 cond_next:              ; No predecessors!
25         br label %bb15
27 bb15:           ; preds = %cond_next, %cond_false
28         br label %bb24
30 bb17:           ; preds = %cond_true29
31         br label %bb24
33 bb24:           ; preds = %bb17, %bb15
34         br i1 false, label %cond_true29, label %cond_false30
36 cond_true29:            ; preds = %bb24
37         br label %bb17
39 cond_false30:           ; preds = %bb24
40         br label %bb32
42 cond_next31:            ; No predecessors!
43         br label %bb32
45 bb32:           ; preds = %cond_next31, %cond_false30
46         br label %bb41
48 bb34:           ; preds = %cond_true46
49         br label %bb41
51 bb41:           ; preds = %bb34, %bb32
52         br i1 false, label %cond_true46, label %cond_false47
54 cond_true46:            ; preds = %bb41
55         br label %bb34
57 cond_false47:           ; preds = %bb41
58         br label %bb49
60 cond_next48:            ; No predecessors!
61         br label %bb49
63 bb49:           ; preds = %cond_next48, %cond_false47
64         br label %bb58
66 bb51:           ; preds = %cond_true63
67         br label %bb58
69 bb58:           ; preds = %bb51, %bb49
70         br i1 false, label %cond_true63, label %cond_false64
72 cond_true63:            ; preds = %bb58
73         br label %bb51
75 cond_false64:           ; preds = %bb58
76         br label %bb66
78 cond_next65:            ; No predecessors!
79         br label %bb66
81 bb66:           ; preds = %cond_next65, %cond_false64
82         br label %bb76
84 bb68:           ; preds = %cond_true81
85         br label %bb76
87 bb76:           ; preds = %bb68, %bb66
88         br i1 false, label %cond_true81, label %cond_false82
90 cond_true81:            ; preds = %bb76
91         br label %bb68
93 cond_false82:           ; preds = %bb76
94         br label %bb84
96 cond_next83:            ; No predecessors!
97         br label %bb84
99 bb84:           ; preds = %cond_next83, %cond_false82
100         br label %bb94
102 bb86:           ; preds = %cond_true99
103         br label %bb94
105 bb94:           ; preds = %bb86, %bb84
106         br i1 false, label %cond_true99, label %cond_false100
108 cond_true99:            ; preds = %bb94
109         br label %bb86
111 cond_false100:          ; preds = %bb94
112         br label %bb102
114 cond_next101:           ; No predecessors!
115         br label %bb102
117 bb102:          ; preds = %cond_next101, %cond_false100
118         br label %bb112
120 bb104:          ; preds = %cond_true117
121         br label %bb112
123 bb112:          ; preds = %bb104, %bb102
124         br i1 false, label %cond_true117, label %cond_false118
126 cond_true117:           ; preds = %bb112
127         br label %bb104
129 cond_false118:          ; preds = %bb112
130         br label %bb120
132 cond_next119:           ; No predecessors!
133         br label %bb120
135 bb120:          ; preds = %cond_next119, %cond_false118
136         br label %bb130
138 bb122:          ; preds = %cond_true135
139         br label %bb130
141 bb130:          ; preds = %bb122, %bb120
142         br i1 false, label %cond_true135, label %cond_false136
144 cond_true135:           ; preds = %bb130
145         br label %bb122
147 cond_false136:          ; preds = %bb130
148         br label %bb138
150 cond_next137:           ; No predecessors!
151         br label %bb138
153 bb138:          ; preds = %cond_next137, %cond_false136
154         br label %bb148
156 bb140:          ; preds = %cond_true153
157         call fastcc void @_Zjrf1( )
158         br label %bb148
160 bb148:          ; preds = %bb140, %bb138
161         br i1 false, label %cond_true153, label %cond_false154
163 cond_true153:           ; preds = %bb148
164         br label %bb140
166 cond_false154:          ; preds = %bb148
167         br label %bb156
169 cond_next155:           ; No predecessors!
170         br label %bb156
172 bb156:          ; preds = %cond_next155, %cond_false154
173         br label %bb166
175 bb158:          ; preds = %cond_true171
176         br label %bb166
178 bb166:          ; preds = %bb158, %bb156
179         br i1 false, label %cond_true171, label %cond_false172
181 cond_true171:           ; preds = %bb166
182         br label %bb158
184 cond_false172:          ; preds = %bb166
185         br label %bb174
187 cond_next173:           ; No predecessors!
188         br label %bb174
190 bb174:          ; preds = %cond_next173, %cond_false172
191         br label %cleanup
193 cleanup:                ; preds = %bb174
194         br label %finally
196 finally:                ; preds = %cleanup
197         br label %cond_next180
199 cond_false179:          ; preds = %entry
200         br label %cond_next180
202 cond_next180:           ; preds = %cond_false179, %finally
203         br label %return
205 return:         ; preds = %cond_next180
206         ret i32 0
209 define internal fastcc void @_Zjrf2() {
210 entry:
211         br label %bb3
213 bb:             ; preds = %cond_true
214         br label %bb3
216 bb3:            ; preds = %bb, %entry
217         %tmp5 = load i8*, i8** null             ; <i8*> [#uses=1]
218         %tmp = icmp ne i8* null, %tmp5          ; <i1> [#uses=1]
219         br i1 %tmp, label %cond_true, label %cond_false
221 cond_true:              ; preds = %bb3
222         br label %bb
224 cond_false:             ; preds = %bb3
225         br label %bb6
227 cond_next:              ; No predecessors!
228         br label %bb6
230 bb6:            ; preds = %cond_next, %cond_false
231         br label %return
233 return:         ; preds = %bb6
234         ret void
237 define internal fastcc void @_Zjrf3() {
238 entry:
239         call fastcc void @_Zjrf2( )
240         br label %return
242 return:         ; preds = %entry
243         ret void
246 define internal fastcc void @_Zjrf4() {
247 entry:
248         br label %bb6
250 bb:             ; preds = %cond_true
251         br label %bb6
253 bb6:            ; preds = %bb, %entry
254         br i1 false, label %cond_true, label %cond_false
256 cond_true:              ; preds = %bb6
257         br label %bb
259 cond_false:             ; preds = %bb6
260         br label %bb8
262 cond_next:              ; No predecessors!
263         br label %bb8
265 bb8:            ; preds = %cond_next, %cond_false
266         br i1 false, label %cond_true9, label %cond_false12
268 cond_true9:             ; preds = %bb8
269         call fastcc void @_Zjrf3( )
270         br label %cond_next13
272 cond_false12:           ; preds = %bb8
273         br label %cond_next13
275 cond_next13:            ; preds = %cond_false12, %cond_true9
276         br label %return
278 return:         ; preds = %cond_next13
279         ret void
282 define internal fastcc void @_Zjrf5() {
283 entry:
284         call fastcc void @_Zjrf4( )
285         br label %return
287 return:         ; preds = %entry
288         ret void
291 define internal fastcc void @_Zjrf6() {
292 entry:
293         call fastcc void @_Zjrf5( )
294         br label %return
296 return:         ; preds = %entry
297         ret void
300 define internal fastcc void @_Zjrf7() {
301 entry:
302         br label %cleanup
304 cleanup:                ; preds = %entry
305         br label %finally
307 finally:                ; preds = %cleanup
308         call fastcc void @_Zjrf6( )
309         br label %cleanup9
311 cleanup9:               ; preds = %finally
312         br label %finally8
314 finally8:               ; preds = %cleanup9
315         br label %cleanup11
317 cleanup11:              ; preds = %finally8
318         br label %finally10
320 finally10:              ; preds = %cleanup11
321         br label %finally23
323 finally23:              ; preds = %finally10
324         br label %return
326 return:         ; preds = %finally23
327         ret void
330 define internal fastcc void @_Zjrf11() {
331 entry:
332         br label %bb7
334 bb:             ; preds = %cond_true
335         br label %bb7
337 bb7:            ; preds = %bb, %entry
338         br i1 false, label %cond_true, label %cond_false
340 cond_true:              ; preds = %bb7
341         br label %bb
343 cond_false:             ; preds = %bb7
344         br label %bb9
346 cond_next:              ; No predecessors!
347         br label %bb9
349 bb9:            ; preds = %cond_next, %cond_false
350         br label %return
351                 ; No predecessors!
352         br i1 false, label %cond_true12, label %cond_false15
354 cond_true12:            ; preds = %0
355         call fastcc void @_Zjrf3( )
356         br label %cond_next16
358 cond_false15:           ; preds = %0
359         br label %cond_next16
361 cond_next16:            ; preds = %cond_false15, %cond_true12
362         br label %return
364 return:         ; preds = %cond_next16, %bb9
365         ret void
368 define internal fastcc void @_Zjrf9() {
369 entry:
370         call fastcc void @_Zjrf11( )
371         br label %return
373 return:         ; preds = %entry
374         ret void
377 define internal fastcc void @_Zjrf10() {
378 entry:
379         call fastcc void @_Zjrf9( )
380         br label %return
382 return:         ; preds = %entry
383         ret void
386 define internal fastcc void @_Zjrf8() {
387 entry:
388         br i1 false, label %cond_true, label %cond_false201
390 cond_true:              ; preds = %entry
391         br i1 false, label %cond_true36, label %cond_false
393 cond_true36:            ; preds = %cond_true
394         br label %cleanup
396 cleanup:                ; preds = %cond_true36
397         br label %finally
399 finally:                ; preds = %cleanup
400         br label %cond_next189
402 cond_false:             ; preds = %cond_true
403         br i1 false, label %cond_true99, label %cond_false137
405 cond_true99:            ; preds = %cond_false
406         br label %cleanup136
408 cleanup136:             ; preds = %cond_true99
409         br label %finally135
411 finally135:             ; preds = %cleanup136
412         br label %cond_next
414 cond_false137:          ; preds = %cond_false
415         call fastcc void @_Zjrf10( )
416         br label %cleanup188
418 cleanup188:             ; preds = %cond_false137
419         br label %finally187
421 finally187:             ; preds = %cleanup188
422         br label %cond_next
424 cond_next:              ; preds = %finally187, %finally135
425         br label %cond_next189
427 cond_next189:           ; preds = %cond_next, %finally
428         br label %cond_next202
430 cond_false201:          ; preds = %entry
431         br label %cond_next202
433 cond_next202:           ; preds = %cond_false201, %cond_next189
434         br label %return
436 return:         ; preds = %cond_next202
437         ret void
440 define internal fastcc void @_Zjrf1() {
441 entry:
442         br label %bb492
444 bb:             ; preds = %cond_true499
445         br label %cleanup
447 cleanup:                ; preds = %bb
448         br label %finally
450 finally:                ; preds = %cleanup
451         br label %cleanup11
453 cleanup11:              ; preds = %finally
454         br label %finally10
456 finally10:              ; preds = %cleanup11
457         br i1 false, label %cond_true, label %cond_false286
459 cond_true:              ; preds = %finally10
460         br label %cleanup26
462 cleanup26:              ; preds = %cond_true
463         br label %finally25
465 finally25:              ; preds = %cleanup26
466         br label %bb30
468 bb27:           ; preds = %cond_true37
469         br label %bb30
471 bb30:           ; preds = %bb27, %finally25
472         br i1 false, label %cond_true37, label %cond_false
474 cond_true37:            ; preds = %bb30
475         br label %bb27
477 cond_false:             ; preds = %bb30
478         br label %bb38
480 cond_next:              ; No predecessors!
481         br label %bb38
483 bb38:           ; preds = %cond_next, %cond_false
484         br label %bb148
486 bb40:           ; preds = %cond_true156
487         br label %bb139
489 bb41:           ; preds = %cond_true142
490         call fastcc void @_Zjrf7( )
491         br label %bb105
493 bb44:           ; preds = %cond_true112
494         br label %bb74
496 bb66:           ; preds = %cond_true80
497         br label %bb74
499 bb74:           ; preds = %bb66, %bb44
500         br i1 false, label %cond_true80, label %cond_false81
502 cond_true80:            ; preds = %bb74
503         br label %bb66
505 cond_false81:           ; preds = %bb74
506         br label %bb83
508 cond_next82:            ; No predecessors!
509         br label %bb83
511 bb83:           ; preds = %cond_next82, %cond_false81
512         br label %cleanup97
514 cleanup97:              ; preds = %bb83
515         br label %finally96
517 finally96:              ; preds = %cleanup97
518         br label %cleanup99
520 cleanup99:              ; preds = %finally96
521         br label %finally98
523 finally98:              ; preds = %cleanup99
524         br label %bb105
526 bb105:          ; preds = %finally98, %bb41
527         br i1 false, label %cond_true112, label %cond_false113
529 cond_true112:           ; preds = %bb105
530         br label %bb44
532 cond_false113:          ; preds = %bb105
533         br label %bb115
535 cond_next114:           ; No predecessors!
536         br label %bb115
538 bb115:          ; preds = %cond_next114, %cond_false113
539         br i1 false, label %cond_true119, label %cond_false123
541 cond_true119:           ; preds = %bb115
542         call fastcc void @_Zjrf8( )
543         br label %cond_next124
545 cond_false123:          ; preds = %bb115
546         br label %cond_next124
548 cond_next124:           ; preds = %cond_false123, %cond_true119
549         br i1 false, label %cond_true131, label %cond_false132
551 cond_true131:           ; preds = %cond_next124
552         br label %cleanup135
554 cond_false132:          ; preds = %cond_next124
555         br label %cond_next133
557 cond_next133:           ; preds = %cond_false132
558         br label %cleanup136
560 cleanup135:             ; preds = %cond_true131
561         br label %done
563 cleanup136:             ; preds = %cond_next133
564         br label %finally134
566 finally134:             ; preds = %cleanup136
567         br label %bb139
569 bb139:          ; preds = %finally134, %bb40
570         br i1 false, label %cond_true142, label %cond_false143
572 cond_true142:           ; preds = %bb139
573         br label %bb41
575 cond_false143:          ; preds = %bb139
576         br label %bb145
578 cond_next144:           ; No predecessors!
579         br label %bb145
581 bb145:          ; preds = %cond_next144, %cond_false143
582         br label %bb148
584 bb148:          ; preds = %bb145, %bb38
585         br i1 false, label %cond_true156, label %cond_false157
587 cond_true156:           ; preds = %bb148
588         br label %bb40
590 cond_false157:          ; preds = %bb148
591         br label %bb159
593 cond_next158:           ; No predecessors!
594         br label %bb159
596 bb159:          ; preds = %cond_next158, %cond_false157
597         br label %done
599 done:           ; preds = %bb159, %cleanup135
600         br label %bb214
602 bb185:          ; preds = %cond_true218
603         br i1 false, label %cond_true193, label %cond_false206
605 cond_true193:           ; preds = %bb185
606         br label %cond_next211
608 cond_false206:          ; preds = %bb185
609         br label %cond_next211
611 cond_next211:           ; preds = %cond_false206, %cond_true193
612         br label %bb214
614 bb214:          ; preds = %cond_next211, %done
615         br i1 false, label %cond_true218, label %cond_false219
617 cond_true218:           ; preds = %bb214
618         br label %bb185
620 cond_false219:          ; preds = %bb214
621         br label %bb221
623 cond_next220:           ; No predecessors!
624         br label %bb221
626 bb221:          ; preds = %cond_next220, %cond_false219
627         br i1 false, label %cond_true236, label %cond_false245
629 cond_true236:           ; preds = %bb221
630         br label %cond_next249
632 cond_false245:          ; preds = %bb221
633         br label %cond_next249
635 cond_next249:           ; preds = %cond_false245, %cond_true236
636         br i1 false, label %cond_true272, label %cond_false277
638 cond_true272:           ; preds = %cond_next249
639         br label %cond_next278
641 cond_false277:          ; preds = %cond_next249
642         br label %cond_next278
644 cond_next278:           ; preds = %cond_false277, %cond_true272
645         br label %cleanup285
647 cleanup285:             ; preds = %cond_next278
648         br label %finally284
650 finally284:             ; preds = %cleanup285
651         br label %cond_next287
653 cond_false286:          ; preds = %finally10
654         br label %cond_next287
656 cond_next287:           ; preds = %cond_false286, %finally284
657         br i1 false, label %cond_true317, label %cond_false319
659 cond_true317:           ; preds = %cond_next287
660         br label %cond_next321
662 cond_false319:          ; preds = %cond_next287
663         br label %cond_next321
665 cond_next321:           ; preds = %cond_false319, %cond_true317
666         br label %bb348
668 bb335:          ; preds = %cond_true355
669         br label %bb348
671 bb348:          ; preds = %bb335, %cond_next321
672         br i1 false, label %cond_true355, label %cond_false356
674 cond_true355:           ; preds = %bb348
675         br label %bb335
677 cond_false356:          ; preds = %bb348
678         br label %bb358
680 cond_next357:           ; No predecessors!
681         br label %bb358
683 bb358:          ; preds = %cond_next357, %cond_false356
684         br i1 false, label %cond_true363, label %cond_false364
686 cond_true363:           ; preds = %bb358
687         br label %bb388
689 cond_false364:          ; preds = %bb358
690         br label %cond_next365
692 cond_next365:           ; preds = %cond_false364
693         br i1 false, label %cond_true370, label %cond_false371
695 cond_true370:           ; preds = %cond_next365
696         br label %bb388
698 cond_false371:          ; preds = %cond_next365
699         br label %cond_next372
701 cond_next372:           ; preds = %cond_false371
702         br i1 false, label %cond_true385, label %cond_false386
704 cond_true385:           ; preds = %cond_next372
705         br label %bb388
707 cond_false386:          ; preds = %cond_next372
708         br label %cond_next387
710 cond_next387:           ; preds = %cond_false386
711         br label %bb389
713 bb388:          ; preds = %cond_true385, %cond_true370, %cond_true363
714         br label %bb389
716 bb389:          ; preds = %bb388, %cond_next387
717         br i1 false, label %cond_true392, label %cond_false443
719 cond_true392:           ; preds = %bb389
720         br label %bb419
722 bb402:          ; preds = %cond_true425
723         br i1 false, label %cond_true406, label %cond_false412
725 cond_true406:           ; preds = %bb402
726         br label %cond_next416
728 cond_false412:          ; preds = %bb402
729         br label %cond_next416
731 cond_next416:           ; preds = %cond_false412, %cond_true406
732         br label %bb419
734 bb419:          ; preds = %cond_next416, %cond_true392
735         br i1 false, label %cond_true425, label %cond_false426
737 cond_true425:           ; preds = %bb419
738         br label %bb402
740 cond_false426:          ; preds = %bb419
741         br label %bb428
743 cond_next427:           ; No predecessors!
744         br label %bb428
746 bb428:          ; preds = %cond_next427, %cond_false426
747         br label %cond_next478
749 cond_false443:          ; preds = %bb389
750         br label %bb460
752 bb450:          ; preds = %cond_true466
753         br label %bb460
755 bb460:          ; preds = %bb450, %cond_false443
756         br i1 false, label %cond_true466, label %cond_false467
758 cond_true466:           ; preds = %bb460
759         br label %bb450
761 cond_false467:          ; preds = %bb460
762         br label %bb469
764 cond_next468:           ; No predecessors!
765         br label %bb469
767 bb469:          ; preds = %cond_next468, %cond_false467
768         br label %cond_next478
770 cond_next478:           ; preds = %bb469, %bb428
771         br label %cleanup485
773 cleanup485:             ; preds = %cond_next478
774         br label %finally484
776 finally484:             ; preds = %cleanup485
777         br label %cleanup487
779 cleanup487:             ; preds = %finally484
780         br label %finally486
782 finally486:             ; preds = %cleanup487
783         br label %cleanup489
785 cleanup489:             ; preds = %finally486
786         br label %finally488
788 finally488:             ; preds = %cleanup489
789         br label %bb492
791 bb492:          ; preds = %finally488, %entry
792         br i1 false, label %cond_true499, label %cond_false500
794 cond_true499:           ; preds = %bb492
795         br label %bb
797 cond_false500:          ; preds = %bb492
798         br label %bb502
800 cond_next501:           ; No predecessors!
801         br label %bb502
803 bb502:          ; preds = %cond_next501, %cond_false500
804         br label %return
806 return:         ; preds = %bb502
807         ret void
810 define internal fastcc void @_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEEEvT_S7_() {
811 entry:
812         br label %bb12
814 bb:             ; preds = %cond_true
815         br label %cleanup
817 cleanup:                ; preds = %bb
818         br label %finally
820 finally:                ; preds = %cleanup
821         br label %bb12
823 bb12:           ; preds = %finally, %entry
824         br i1 false, label %cond_true, label %cond_false
826 cond_true:              ; preds = %bb12
827         br label %bb
829 cond_false:             ; preds = %bb12
830         br label %bb14
832 cond_next:              ; No predecessors!
833         br label %bb14
835 bb14:           ; preds = %cond_next, %cond_false
836         br label %return
838 return:         ; preds = %bb14
839         ret void