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]; }