188 lines
11 KiB
Plaintext
188 lines
11 KiB
Plaintext
digraph CFG {
|
|
// Analysis: Live Variables + Reached Uses analyses
|
|
graph [splines=ortho, overlap=false, ranksep=0.7, nodesep=0.45];
|
|
node [fontname="Helvetica"];
|
|
n1 [label="START", shape=ellipse, style=filled, color=gray];
|
|
n1 -> n52;
|
|
n52 [label="10", shape=box];
|
|
n52 -> n53;
|
|
n53 [label="CALL f1", shape=box, style=filled, color=orange];
|
|
a53 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#d7b2f7", color="#8d3fd1", fontcolor="#8d3fd1"];
|
|
a53 -> n53 [style=dotted, arrowhead=none, color="#8d3fd1"];
|
|
n53 -> n3;
|
|
n53 -> n55;
|
|
n3 [label="START f1(b)", shape=ellipse, style=filled, color=green];
|
|
a3 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f1', 'b'), ('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#f7b2ef", color="#d13fbf", fontcolor="#d13fbf"];
|
|
a3 -> n3 [style=dotted, arrowhead=none, color="#d13fbf"];
|
|
n3 -> n8;
|
|
n8 [label="b", shape=box];
|
|
n8 -> n9;
|
|
n9 [label="0", shape=box];
|
|
n9 -> n10;
|
|
n10 [label="b == 0", shape=box];
|
|
a10 [label="LivingVariables\nIn := [('f1', 'b'), ('f2', 'a'), ('f2', 'b')]\nOut := [('f1', 'b'), ('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#f2f7b2", color="#c5d13f", fontcolor="#c5d13f"];
|
|
a10 -> n10 [style=dotted, arrowhead=none, color="#c5d13f"];
|
|
n10 -> n11;
|
|
n11 [label="<?>", shape=diamond];
|
|
n11 -> n15 [label="T"];
|
|
n11 -> n16 [label="F"];
|
|
n15 [label="0", shape=box];
|
|
n15 -> n4;
|
|
n4 [label="END f1(b)", shape=ellipse, style=filled, color=green];
|
|
a4 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#b2f7ec", color="#3fd1b9", fontcolor="#3fd1b9"];
|
|
a4 -> n4 [style=dotted, arrowhead=none, color="#3fd1b9"];
|
|
n4 -> n21;
|
|
n4 -> n32;
|
|
n4 -> n36;
|
|
n4 -> n55;
|
|
n21 [label="RET f1", shape=box, style=filled, color=orange];
|
|
a21 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#f7b2bb", color="#d13f51", fontcolor="#d13f51"];
|
|
a21 -> n21 [style=dotted, arrowhead=none, color="#d13f51"];
|
|
n21 -> n4;
|
|
n32 [label="RET f1", shape=box, style=filled, color=orange];
|
|
a32 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#e0b2f7", color="#a03fd1", fontcolor="#a03fd1"];
|
|
a32 -> n32 [style=dotted, arrowhead=none, color="#a03fd1"];
|
|
n32 -> n45;
|
|
n45 [label="a", shape=box];
|
|
n45 -> n46;
|
|
n46 [label="b", shape=box];
|
|
n46 -> n47;
|
|
n47 [label="a * b", shape=box];
|
|
n47 -> n48;
|
|
n48 [label="CALL g", shape=box, style=filled, color=orange];
|
|
a48 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#b2b3f7", color="#3f40d1", fontcolor="#3f40d1"];
|
|
a48 -> n48 [style=dotted, arrowhead=none, color="#3f40d1"];
|
|
n48 -> n37;
|
|
n48 -> n50;
|
|
n37 [label="START g(c)", shape=ellipse, style=filled, color=green];
|
|
a37 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b'), ('g', 'c')]", shape=note, style="filled", fillcolor="#f7b2e9", color="#d13fb3", fontcolor="#d13fb3"];
|
|
a37 -> n37 [style=dotted, arrowhead=none, color="#d13fb3"];
|
|
n37 -> n40;
|
|
n40 [label="a", shape=box];
|
|
n40 -> n41;
|
|
n41 [label="b", shape=box];
|
|
n41 -> n42;
|
|
n42 [label="a * b", shape=box];
|
|
n42 -> n43;
|
|
n43 [label="c", shape=box];
|
|
n43 -> n44;
|
|
n44 [label="(a * b) * c", shape=box];
|
|
n44 -> n38;
|
|
n38 [label="END g(c)", shape=ellipse, style=filled, color=green];
|
|
n38 -> n50;
|
|
n50 [label="RET g", shape=box, style=filled, color=orange];
|
|
n50 -> n6;
|
|
n6 [label="END f2(a, b)", shape=ellipse, style=filled, color=green];
|
|
n6 -> n78;
|
|
n78 [label="RET f2", shape=box, style=filled, color=orange];
|
|
n78 -> n2;
|
|
n2 [label="END", shape=ellipse, style=filled, color=gray];
|
|
n36 [label="RET f1", shape=box, style=filled, color=orange];
|
|
a36 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#d5f7b2", color="#89d13f", fontcolor="#89d13f"];
|
|
a36 -> n36 [style=dotted, arrowhead=none, color="#89d13f"];
|
|
n36 -> n45;
|
|
n55 [label="RET f1", shape=box, style=filled, color=orange];
|
|
n55 -> n57;
|
|
n57 [label="10", shape=box];
|
|
n57 -> n70;
|
|
n70 [label="20", shape=box];
|
|
n70 -> n71;
|
|
n71 [label="30", shape=box];
|
|
n71 -> n72;
|
|
n72 [label="CALL max", shape=box, style=filled, color=orange];
|
|
n72 -> n58;
|
|
n72 -> n74;
|
|
n58 [label="START max(a, b)", shape=ellipse, style=filled, color=green];
|
|
a58 [label="LivingVariables\nIn := []\nOut := [('max', 'a'), ('max', 'b')]", shape=note, style="filled", fillcolor="#f7b2f2", color="#d13fc6", fontcolor="#d13fc6"];
|
|
a58 -> n58 [style=dotted, arrowhead=none, color="#d13fc6"];
|
|
n58 -> n61;
|
|
n61 [label="a", shape=box];
|
|
n61 -> n62;
|
|
n62 [label="b", shape=box];
|
|
n62 -> n63;
|
|
n63 [label="a > b", shape=box];
|
|
a63 [label="LivingVariables\nIn := [('max', 'a'), ('max', 'b')]\nOut := [('max', 'a'), ('max', 'b')]", shape=note, style="filled", fillcolor="#f7b2cd", color="#d13f77", fontcolor="#d13f77"];
|
|
a63 -> n63 [style=dotted, arrowhead=none, color="#d13f77"];
|
|
n63 -> n64;
|
|
n64 [label="<?>", shape=diamond];
|
|
n64 -> n68 [label="T"];
|
|
n64 -> n69 [label="F"];
|
|
n68 [label="a", shape=box];
|
|
n68 -> n59;
|
|
n59 [label="END max(a, b)", shape=ellipse, style=filled, color=green];
|
|
n59 -> n74;
|
|
n74 [label="RET max", shape=box, style=filled, color=orange];
|
|
n74 -> n76;
|
|
n76 [label="CALL f2", shape=box, style=filled, color=orange];
|
|
n76 -> n5;
|
|
n76 -> n78;
|
|
n5 [label="START f2(a, b)", shape=ellipse, style=filled, color=green];
|
|
a5 [label="LivingVariables\nIn := []\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#f7d8b2", color="#d18e3f", fontcolor="#d18e3f"];
|
|
a5 -> n5 [style=dotted, arrowhead=none, color="#d18e3f"];
|
|
n5 -> n22;
|
|
n22 [label="a", shape=box];
|
|
n22 -> n23;
|
|
n23 [label="b", shape=box];
|
|
n23 -> n24;
|
|
n24 [label="a > b", shape=box];
|
|
a24 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#f7b2f7", color="#d13fd1", fontcolor="#d13fd1"];
|
|
a24 -> n24 [style=dotted, arrowhead=none, color="#d13fd1"];
|
|
n24 -> n25;
|
|
n25 [label="<?>", shape=diamond];
|
|
n25 -> n29 [label="T"];
|
|
n25 -> n33 [label="F"];
|
|
n29 [label="a", shape=box];
|
|
n29 -> n30;
|
|
n30 [label="CALL f1", shape=box, style=filled, color=orange];
|
|
a30 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#b2e6f7", color="#3fadd1", fontcolor="#3fadd1"];
|
|
a30 -> n30 [style=dotted, arrowhead=none, color="#3fadd1"];
|
|
n30 -> n3;
|
|
n30 -> n32;
|
|
n33 [label="b", shape=box];
|
|
n33 -> n34;
|
|
n34 [label="CALL f1", shape=box, style=filled, color=orange];
|
|
a34 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#f7b8b2", color="#d14a3f", fontcolor="#d14a3f"];
|
|
a34 -> n34 [style=dotted, arrowhead=none, color="#d14a3f"];
|
|
n34 -> n3;
|
|
n34 -> n36;
|
|
n69 [label="b", shape=box];
|
|
n69 -> n59;
|
|
n16 [label="b", shape=box];
|
|
n16 -> n17;
|
|
n17 [label="1", shape=box];
|
|
n17 -> n18;
|
|
n18 [label="b - 1", shape=box];
|
|
n18 -> n19;
|
|
n19 [label="CALL f1", shape=box, style=filled, color=orange];
|
|
a19 [label="LivingVariables\nIn := [('f2', 'a'), ('f2', 'b')]\nOut := [('f2', 'a'), ('f2', 'b')]", shape=note, style="filled", fillcolor="#d2b2f7", color="#813fd1", fontcolor="#813fd1"];
|
|
a19 -> n19 [style=dotted, arrowhead=none, color="#813fd1"];
|
|
n19 -> n3;
|
|
n19 -> n21;
|
|
rh3 [shape=point, width=0.05, height=0.05, color="#d13fbf", fillcolor="#d13fbf", style=filled];
|
|
{ rank=same; n3; rh3; }
|
|
n3:se -> rh3 [color="#d13fbf", style=dashed, penwidth=1.2, arrowhead=none, constraint=false, tailclip=true, headclip=true];
|
|
rh3 -> n8:ne [color="#d13fbf", fontcolor="#d13fbf", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh3 -> n16:ne [color="#d13fbf", fontcolor="#d13fbf", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh5 [shape=point, width=0.05, height=0.05, color="#d18e3f", fillcolor="#d18e3f", style=filled];
|
|
{ rank=same; n5; rh5; }
|
|
n5:sw -> rh5 [color="#d18e3f", style=dashed, penwidth=1.2, arrowhead=none, constraint=false, tailclip=true, headclip=true];
|
|
rh5 -> n22:nw [color="#d18e3f", fontcolor="#d18e3f", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh5 -> n23:sw [color="#d18e3f", fontcolor="#d18e3f", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh5 -> n29:sw [color="#d18e3f", fontcolor="#d18e3f", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh5 -> n33:sw [color="#d18e3f", fontcolor="#d18e3f", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh5 -> n40:nw [color="#d18e3f", fontcolor="#d18e3f", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh5 -> n41:sw [color="#d18e3f", fontcolor="#d18e3f", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh5 -> n45:sw [color="#d18e3f", fontcolor="#d18e3f", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh5 -> n46:nw [color="#d18e3f", fontcolor="#d18e3f", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh37 [shape=point, width=0.05, height=0.05, color="#d13fb3", fillcolor="#d13fb3", style=filled];
|
|
{ rank=same; n37; rh37; }
|
|
n37:se -> rh37 [color="#d13fb3", style=dashed, penwidth=1.2, arrowhead=none, constraint=false, tailclip=true, headclip=true];
|
|
rh37 -> n43:se [color="#d13fb3", fontcolor="#d13fb3", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh58 [shape=point, width=0.05, height=0.05, color="#d13fc6", fillcolor="#d13fc6", style=filled];
|
|
{ rank=same; n58; rh58; }
|
|
n58:sw -> rh58 [color="#d13fc6", style=dashed, penwidth=1.2, arrowhead=none, constraint=false, tailclip=true, headclip=true];
|
|
rh58 -> n61:sw [color="#d13fc6", fontcolor="#d13fc6", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh58 -> n62:nw [color="#d13fc6", fontcolor="#d13fc6", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh58 -> n68:nw [color="#d13fc6", fontcolor="#d13fc6", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
rh58 -> n69:sw [color="#d13fc6", fontcolor="#d13fc6", fontsize=8, style=dashed, penwidth=1.0, arrowsize=0.6, constraint=false, tailclip=true, headclip=true];
|
|
} |