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
@@ -130,17 +130,19 @@ digraph flowFromInplaceLambda2_kt {
}
25 -> {26};
26 -> {27};
27 -> {41};
27 -> {28} [color=red];
27 -> {41 29};
27 -> {28} [style=dotted];
27 -> {41} [style=dashed];
28 -> {29};
28 -> {35} [color=red];
28 -> {29} [color=green];
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {48};
32 -> {33} [color=red];
32 -> {48 34};
32 -> {33} [style=dotted];
32 -> {48} [style=dashed];
33 -> {34};
33 -> {35} [color=red];
33 -> {34} [color=green];
34 -> {35};
35 -> {36};
36 -> {37};
@@ -153,16 +155,14 @@ digraph flowFromInplaceLambda2_kt {
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {35} [color=red];
47 -> {28} [color=green];
47 -> {28};
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {35} [color=red];
54 -> {33} [color=green];
54 -> {33};
subgraph cluster_14 {
color=red
@@ -215,18 +215,20 @@ digraph flowFromInplaceLambda2_kt {
}
55 -> {56};
56 -> {57};
57 -> {72};
57 -> {58} [color=red];
57 -> {72 59};
57 -> {58} [style=dotted];
57 -> {72} [style=dashed];
58 -> {59};
58 -> {66} [color=red];
58 -> {59} [color=green];
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {79};
63 -> {64} [color=red];
63 -> {79 65};
63 -> {64} [style=dotted];
63 -> {79} [style=dashed];
64 -> {65};
64 -> {66} [color=red];
64 -> {65} [color=green];
65 -> {66};
66 -> {67};
67 -> {68};
@@ -239,16 +241,14 @@ digraph flowFromInplaceLambda2_kt {
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {66} [color=red];
78 -> {58} [color=green];
78 -> {58};
79 -> {80};
80 -> {81};
81 -> {82};
82 -> {83};
83 -> {84};
84 -> {85};
85 -> {66} [color=red];
85 -> {64} [color=green];
85 -> {64};
subgraph cluster_20 {
color=red
@@ -331,10 +331,11 @@ digraph flowFromInplaceLambda2_kt {
}
86 -> {87};
87 -> {88};
88 -> {118};
88 -> {89} [color=red];
88 -> {118 90};
88 -> {89} [style=dotted];
88 -> {118} [style=dashed];
89 -> {90};
89 -> {112} [color=red];
89 -> {90} [color=green];
90 -> {91};
91 -> {92};
92 -> {93};
@@ -354,10 +355,11 @@ digraph flowFromInplaceLambda2_kt {
106 -> {107};
107 -> {108};
108 -> {109};
109 -> {125};
109 -> {110} [color=red];
109 -> {125 111};
109 -> {110} [style=dotted];
109 -> {125} [style=dashed];
110 -> {111};
110 -> {112} [color=red];
110 -> {111} [color=green];
111 -> {112};
112 -> {113};
113 -> {114};
@@ -370,16 +372,14 @@ digraph flowFromInplaceLambda2_kt {
121 -> {122};
122 -> {123};
123 -> {124};
124 -> {112} [color=red];
124 -> {89} [color=green];
124 -> {89};
125 -> {126};
126 -> {127};
127 -> {128};
128 -> {129};
129 -> {130};
130 -> {131};
131 -> {112} [color=red];
131 -> {110} [color=green];
131 -> {110};
subgraph cluster_31 {
color=red
@@ -518,29 +518,32 @@ digraph flowFromInplaceLambda2_kt {
150 -> {151};
151 -> {152};
152 -> {153};
153 -> {187};
153 -> {154} [color=red];
153 -> {187 155};
153 -> {154} [style=dotted];
153 -> {187} [style=dashed];
154 -> {155};
154 -> {171} [color=red];
154 -> {155} [color=green];
155 -> {156};
156 -> {157};
157 -> {165};
158 -> {159};
159 -> {160};
160 -> {180};
160 -> {161} [color=red];
160 -> {180 162};
160 -> {161} [style=dotted];
160 -> {180} [style=dashed];
161 -> {162};
161 -> {171} [color=red];
161 -> {162} [color=green];
162 -> {163};
163 -> {164};
164 -> {165};
165 -> {171 166};
166 -> {167};
167 -> {168};
168 -> {192};
168 -> {169} [color=red];
168 -> {192 170};
168 -> {169} [style=dotted];
168 -> {192} [style=dashed];
169 -> {170};
169 -> {172} [color=red];
169 -> {170} [color=green];
170 -> {172};
171 -> {172} [color=red];
172 -> {173};
@@ -556,14 +559,12 @@ digraph flowFromInplaceLambda2_kt {
183 -> {184};
184 -> {185};
185 -> {186};
186 -> {171} [color=red];
186 -> {161} [color=green];
186 -> {161};
187 -> {188};
188 -> {189};
189 -> {190};
190 -> {191};
191 -> {171} [color=red];
191 -> {154} [color=green];
191 -> {154};
192 -> {193};
193 -> {194};
194 -> {195};
@@ -571,8 +572,7 @@ digraph flowFromInplaceLambda2_kt {
196 -> {197};
197 -> {198};
198 -> {199};
199 -> {172} [color=red];
199 -> {169} [color=green];
199 -> {169};
subgraph cluster_47 {
color=red
@@ -626,17 +626,19 @@ digraph flowFromInplaceLambda2_kt {
201 -> {202};
202 -> {203 207};
203 -> {204};
204 -> {218};
204 -> {205} [color=red];
204 -> {218 206};
204 -> {205} [style=dotted];
204 -> {218} [style=dashed];
205 -> {206};
205 -> {212} [color=red];
205 -> {206} [color=green];
206 -> {207};
207 -> {212 208};
208 -> {209};
209 -> {225};
209 -> {210} [color=red];
209 -> {225 211};
209 -> {210} [style=dotted];
209 -> {225} [style=dashed];
210 -> {211};
210 -> {213} [color=red];
210 -> {211} [color=green];
211 -> {213};
212 -> {213} [color=red];
213 -> {214};
@@ -649,14 +651,12 @@ digraph flowFromInplaceLambda2_kt {
221 -> {222};
222 -> {223};
223 -> {224};
224 -> {212} [color=red];
224 -> {205} [color=green];
224 -> {205};
225 -> {226};
226 -> {227};
227 -> {228};
228 -> {229};
229 -> {213} [color=red];
229 -> {210} [color=green];
229 -> {210};
subgraph cluster_53 {
color=red
@@ -762,29 +762,32 @@ digraph flowFromInplaceLambda2_kt {
237 -> {238};
238 -> {239};
239 -> {240};
240 -> {271};
240 -> {241} [color=red];
240 -> {271 242};
240 -> {241} [style=dotted];
240 -> {271} [style=dashed];
241 -> {242};
241 -> {258} [color=red];
241 -> {242} [color=green];
242 -> {243};
243 -> {244};
244 -> {252};
245 -> {246};
246 -> {247};
247 -> {264};
247 -> {248} [color=red];
247 -> {264 249};
247 -> {248} [style=dotted];
247 -> {264} [style=dashed];
248 -> {249};
248 -> {258} [color=red];
248 -> {249} [color=green];
249 -> {250};
250 -> {251};
251 -> {252};
252 -> {258 253};
253 -> {254};
254 -> {255};
255 -> {278};
255 -> {256} [color=red];
255 -> {278 257};
255 -> {256} [style=dotted];
255 -> {278} [style=dashed];
256 -> {257};
256 -> {259} [color=red];
256 -> {257} [color=green];
257 -> {259};
258 -> {259} [color=red];
259 -> {260};
@@ -797,24 +800,21 @@ digraph flowFromInplaceLambda2_kt {
267 -> {268};
268 -> {269};
269 -> {270};
270 -> {258} [color=red];
270 -> {248} [color=green];
270 -> {248};
271 -> {272};
272 -> {273};
273 -> {274};
274 -> {275};
275 -> {276};
276 -> {277};
277 -> {258} [color=red];
277 -> {241} [color=green];
277 -> {241};
278 -> {279};
279 -> {280};
280 -> {281};
281 -> {282};
282 -> {283};
283 -> {284};
284 -> {259} [color=red];
284 -> {256} [color=green];
284 -> {256};
subgraph cluster_66 {
color=red
@@ -901,17 +901,19 @@ digraph flowFromInplaceLambda2_kt {
295 -> {312};
296 -> {297};
297 -> {298};
298 -> {315};
298 -> {299} [color=red];
298 -> {315 300};
298 -> {299} [style=dotted];
298 -> {315} [style=dashed];
299 -> {300};
299 -> {306} [color=red];
299 -> {300} [color=green];
300 -> {301};
301 -> {302};
302 -> {303};
303 -> {322};
303 -> {304} [color=red];
303 -> {322 305};
303 -> {304} [style=dotted];
303 -> {322} [style=dashed];
304 -> {305};
304 -> {306} [color=red];
304 -> {305} [color=green];
305 -> {306};
306 -> {307};
307 -> {308};
@@ -927,8 +929,7 @@ digraph flowFromInplaceLambda2_kt {
318 -> {319};
319 -> {320};
320 -> {321};
321 -> {306} [color=red];
321 -> {299} [color=green];
321 -> {299};
322 -> {323};
323 -> {324};
324 -> {325};
@@ -936,7 +937,6 @@ digraph flowFromInplaceLambda2_kt {
326 -> {327};
327 -> {328};
328 -> {329};
329 -> {306} [color=red];
329 -> {304} [color=green];
329 -> {304};
}