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
@@ -87,8 +87,8 @@ digraph inPlaceLambdas_kt {
15 -> {23};
16 -> {17};
17 -> {18};
18 -> {26};
18 -> {19} [color=red];
18 -> {26 20};
18 -> {19} [style=dotted];
18 -> {26} [style=dashed];
19 -> {20};
20 -> {21};
@@ -102,8 +102,7 @@ digraph inPlaceLambdas_kt {
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {20} [color=red];
32 -> {19} [color=green];
32 -> {19};
subgraph cluster_11 {
color=red
@@ -135,8 +134,8 @@ digraph inPlaceLambdas_kt {
}
33 -> {34};
34 -> {35};
35 -> {43};
35 -> {36} [color=red];
35 -> {43 37};
35 -> {36} [style=dotted];
35 -> {43} [style=dashed];
36 -> {37};
37 -> {38};
@@ -149,8 +148,7 @@ digraph inPlaceLambdas_kt {
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {37} [color=red];
48 -> {36} [color=green];
48 -> {36};
subgraph cluster_15 {
color=red
@@ -214,8 +212,8 @@ digraph inPlaceLambdas_kt {
56 -> {67};
57 -> {58};
58 -> {59};
59 -> {70};
59 -> {60} [color=red];
59 -> {70 61};
59 -> {60} [style=dotted];
59 -> {70} [style=dashed];
60 -> {61};
61 -> {62};
@@ -235,7 +233,6 @@ digraph inPlaceLambdas_kt {
76 -> {77};
77 -> {78};
78 -> {79};
79 -> {61} [color=red];
79 -> {60} [color=green];
79 -> {60};
}
@@ -216,10 +216,11 @@ digraph lambdaInWhenBranch_kt {
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {82};
48 -> {49} [color=red];
48 -> {82 50};
48 -> {49} [style=dotted];
48 -> {82} [style=dashed];
49 -> {50};
49 -> {53} [color=red];
49 -> {50} [color=green];
50 -> {51};
51 -> {52};
52 -> {53};
@@ -255,7 +256,6 @@ digraph lambdaInWhenBranch_kt {
83 -> {84};
84 -> {85};
85 -> {86};
86 -> {53} [color=red];
86 -> {49} [color=green];
86 -> {49};
}