FIR CFG: remove ordering from control flow through in-place lambdas

Old graph:

  arg -> lambda enter -> ... -> lambda exit -> lambda enter -> ... ->
   -> lambda exit -> call

New graph:

  arg -+-> lambda enter -> ... -> lambda exit -+-> call
       \-> lambda enter -> ... -> lambda exit -/
This commit is contained in:
pyos
2022-11-23 10:10:16 +01:00
committed by teamcity
parent 5dce772f0b
commit c4c05f5248
41 changed files with 515 additions and 555 deletions
@@ -209,8 +209,8 @@ digraph flowFromInplaceLambda_kt {
}
60 -> {61};
61 -> {62};
62 -> {70};
62 -> {63} [color=red];
62 -> {70 64};
62 -> {63} [style=dotted];
62 -> {70} [style=dashed];
63 -> {64};
64 -> {65};
@@ -223,8 +223,7 @@ digraph flowFromInplaceLambda_kt {
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {64} [color=red];
75 -> {63} [color=green];
75 -> {63};
subgraph cluster_20 {
color=red
@@ -286,18 +285,20 @@ digraph flowFromInplaceLambda_kt {
}
76 -> {77};
77 -> {78};
78 -> {97};
78 -> {79} [color=red];
78 -> {97 80};
78 -> {79} [style=dotted];
78 -> {97} [style=dashed];
79 -> {80};
79 -> {81} [color=red];
79 -> {80} [color=green];
80 -> {81};
81 -> {82};
82 -> {83};
83 -> {84};
84 -> {105};
84 -> {85} [color=red];
84 -> {105 86};
84 -> {85} [style=dotted];
84 -> {105} [style=dashed];
85 -> {86};
85 -> {87} [color=red];
85 -> {86} [color=green];
86 -> {87};
87 -> {88};
88 -> {89};
@@ -315,8 +316,7 @@ digraph flowFromInplaceLambda_kt {
101 -> {102};
102 -> {103};
103 -> {104};
104 -> {81} [color=red];
104 -> {79} [color=green];
104 -> {79};
105 -> {106};
106 -> {107};
107 -> {108};
@@ -327,8 +327,7 @@ digraph flowFromInplaceLambda_kt {
112 -> {113};
113 -> {114};
114 -> {115};
115 -> {87} [color=red];
115 -> {85} [color=green];
115 -> {85};
subgraph cluster_26 {
color=red
@@ -390,19 +389,21 @@ digraph flowFromInplaceLambda_kt {
}
116 -> {117};
117 -> {118};
118 -> {137};
118 -> {119} [color=red];
118 -> {137 120};
118 -> {119} [style=dotted];
118 -> {137} [style=dashed];
119 -> {120};
119 -> {121} [color=red];
119 -> {120} [color=green];
119 -> {118} [color=green style=dashed];
120 -> {121};
121 -> {122};
122 -> {123};
123 -> {124};
124 -> {145};
124 -> {125} [color=red];
124 -> {145 126};
124 -> {125} [style=dotted];
124 -> {145} [style=dashed];
125 -> {126};
125 -> {127} [color=red];
125 -> {126} [color=green];
125 -> {124} [color=green style=dashed];
126 -> {127};
127 -> {128};
@@ -421,8 +422,7 @@ digraph flowFromInplaceLambda_kt {
141 -> {142};
142 -> {143};
143 -> {144};
144 -> {121} [color=red];
144 -> {119} [color=green];
144 -> {119};
145 -> {146};
146 -> {147};
147 -> {148};
@@ -433,8 +433,7 @@ digraph flowFromInplaceLambda_kt {
152 -> {153};
153 -> {154};
154 -> {155};
155 -> {127} [color=red];
155 -> {125} [color=green];
155 -> {125};
subgraph cluster_32 {
color=red
@@ -494,16 +493,18 @@ digraph flowFromInplaceLambda_kt {
}
156 -> {157};
157 -> {158};
158 -> {159 176};
158 -> {159 176 160};
158 -> {176} [style=dashed];
159 -> {160};
159 -> {161} [color=red];
159 -> {160} [color=green];
160 -> {161};
161 -> {162};
162 -> {163};
163 -> {164};
164 -> {165 184};
164 -> {165 184 166};
164 -> {184} [style=dashed];
165 -> {166};
165 -> {167} [color=red];
165 -> {166} [color=green];
166 -> {167};
167 -> {168};
168 -> {169};
@@ -590,17 +591,19 @@ digraph flowFromInplaceLambda_kt {
}
194 -> {195};
195 -> {196};
196 -> {197 214};
196 -> {197 214 198};
196 -> {214} [style=dashed];
197 -> {198};
197 -> {199} [color=red];
197 -> {198} [color=green];
197 -> {196} [color=green style=dashed];
198 -> {199};
199 -> {200};
200 -> {201};
201 -> {202};
202 -> {203 222};
202 -> {203 222 204};
202 -> {222} [style=dashed];
203 -> {204};
203 -> {205} [color=red];
203 -> {204} [color=green];
203 -> {202} [color=green style=dashed];
204 -> {205};
205 -> {206};
@@ -688,16 +691,18 @@ digraph flowFromInplaceLambda_kt {
}
232 -> {233};
233 -> {234};
234 -> {235 252};
234 -> {235 252 236};
234 -> {252} [style=dashed];
235 -> {236};
235 -> {237} [color=red];
235 -> {236} [color=green];
236 -> {237};
237 -> {238};
238 -> {239};
239 -> {240};
240 -> {241 260};
240 -> {241 260 242};
240 -> {260} [style=dashed];
241 -> {242};
241 -> {243} [color=red];
241 -> {242} [color=green];
242 -> {243};
243 -> {244};
244 -> {245};
@@ -787,16 +792,18 @@ digraph flowFromInplaceLambda_kt {
}
270 -> {271};
271 -> {272};
272 -> {289};
272 -> {273} [color=red];
272 -> {289 274};
272 -> {273} [style=dotted];
272 -> {289} [style=dashed];
273 -> {274};
273 -> {279} [color=red];
273 -> {274} [color=green];
274 -> {275};
275 -> {276};
276 -> {301};
276 -> {277} [color=red];
276 -> {301 278};
276 -> {277} [style=dotted];
276 -> {301} [style=dashed];
277 -> {278};
277 -> {279} [color=red];
277 -> {278} [color=green];
278 -> {279};
279 -> {280};
280 -> {281};
@@ -818,8 +825,7 @@ digraph flowFromInplaceLambda_kt {
297 -> {298};
298 -> {299};
299 -> {300};
300 -> {279} [color=red];
300 -> {273} [color=green];
300 -> {273};
301 -> {302};
302 -> {303};
303 -> {304};
@@ -831,8 +837,7 @@ digraph flowFromInplaceLambda_kt {
309 -> {310};
310 -> {311};
311 -> {312};
312 -> {279} [color=red];
312 -> {277} [color=green];
312 -> {277};
subgraph cluster_56 {
color=red
@@ -897,17 +902,19 @@ digraph flowFromInplaceLambda_kt {
}
313 -> {314};
314 -> {315};
315 -> {332};
315 -> {316} [color=red];
315 -> {332 317};
315 -> {316} [style=dotted];
315 -> {332} [style=dashed];
316 -> {317};
316 -> {322} [color=red];
316 -> {317} [color=green];
316 -> {315} [color=green style=dashed];
317 -> {318};
318 -> {319};
319 -> {344};
319 -> {320} [color=red];
319 -> {344 321};
319 -> {320} [style=dotted];
319 -> {344} [style=dashed];
320 -> {321};
320 -> {322} [color=red];
320 -> {321} [color=green];
320 -> {319} [color=green style=dashed];
321 -> {322};
322 -> {323};
@@ -930,8 +937,7 @@ digraph flowFromInplaceLambda_kt {
340 -> {341};
341 -> {342};
342 -> {343};
343 -> {322} [color=red];
343 -> {316} [color=green];
343 -> {316};
344 -> {345};
345 -> {346};
346 -> {347};
@@ -943,8 +949,7 @@ digraph flowFromInplaceLambda_kt {
352 -> {353};
353 -> {354};
354 -> {355};
355 -> {322} [color=red];
355 -> {320} [color=green];
355 -> {320};
subgraph cluster_62 {
color=red
@@ -1007,14 +1012,16 @@ digraph flowFromInplaceLambda_kt {
}
356 -> {357};
357 -> {358};
358 -> {359 373};
358 -> {359 373 360};
358 -> {373} [style=dashed];
359 -> {360};
359 -> {365} [color=red];
359 -> {360} [color=green];
360 -> {361};
361 -> {362};
362 -> {363 385};
362 -> {363 385 364};
362 -> {385} [style=dashed];
363 -> {364};
363 -> {365} [color=red];
363 -> {364} [color=green];
364 -> {365};
365 -> {366};
366 -> {367};
@@ -1109,15 +1116,17 @@ digraph flowFromInplaceLambda_kt {
}
397 -> {398};
398 -> {399};
399 -> {400 414};
399 -> {400 414 401};
399 -> {414} [style=dashed];
400 -> {401};
400 -> {406} [color=red];
400 -> {401} [color=green];
400 -> {399} [color=green style=dashed];
401 -> {402};
402 -> {403};
403 -> {404 426};
403 -> {404 426 405};
403 -> {426} [style=dashed];
404 -> {405};
404 -> {406} [color=red];
404 -> {405} [color=green];
404 -> {403} [color=green style=dashed];
405 -> {406};
406 -> {407};
@@ -1213,14 +1222,16 @@ digraph flowFromInplaceLambda_kt {
}
438 -> {439};
439 -> {440};
440 -> {441 455};
440 -> {441 455 442};
440 -> {455} [style=dashed];
441 -> {442};
441 -> {447} [color=red];
441 -> {442} [color=green];
442 -> {443};
443 -> {444};
444 -> {445 467};
444 -> {445 467 446};
444 -> {467} [style=dashed];
445 -> {446};
445 -> {447} [color=red];
445 -> {446} [color=green];
446 -> {447};
447 -> {448};
448 -> {449};
@@ -1296,15 +1307,17 @@ digraph flowFromInplaceLambda_kt {
}
479 -> {480};
480 -> {481};
481 -> {493};
481 -> {482} [color=red];
481 -> {493 483};
481 -> {482} [style=dotted];
481 -> {493} [style=dashed];
482 -> {483};
482 -> {487} [color=red];
482 -> {483} [color=green];
483 -> {484};
484 -> {498};
484 -> {485} [color=red];
484 -> {498 486};
484 -> {485} [style=dotted];
484 -> {498} [style=dashed];
485 -> {486};
485 -> {487} [color=red];
485 -> {486} [color=green];
486 -> {487};
487 -> {488};
488 -> {489};
@@ -1315,14 +1328,12 @@ digraph flowFromInplaceLambda_kt {
494 -> {495};
495 -> {496};
496 -> {497};
497 -> {487} [color=red];
497 -> {482} [color=green];
497 -> {482};
498 -> {499};
499 -> {500};
500 -> {501};
501 -> {502};
502 -> {487} [color=red];
502 -> {485} [color=green];
502 -> {485};
subgraph cluster_86 {
color=red
@@ -1367,9 +1378,10 @@ digraph flowFromInplaceLambda_kt {
}
503 -> {504};
504 -> {505};
505 -> {506 514};
505 -> {506 514 507};
505 -> {514} [style=dashed];
506 -> {507};
506 -> {508} [color=red];
506 -> {507} [color=green];
507 -> {508};
508 -> {509};
509 -> {510};
@@ -1378,16 +1390,17 @@ digraph flowFromInplaceLambda_kt {
512 -> {513};
514 -> {515};
515 -> {516};
516 -> {521};
516 -> {517} [color=red];
516 -> {521 518};
516 -> {517} [style=dotted];
516 -> {521} [style=dashed];
517 -> {518};
517 -> {508} [color=red];
517 -> {518} [color=green];
518 -> {519};
519 -> {520};
521 -> {522};
522 -> {523};
523 -> {524};
524 -> {525};
525 -> {517} [color=green];
525 -> {517};
}