digraph G { // p [label=y_in = c
f()
c = y_out>,shape=rect]; f_call [label="f()"] x_in [label="x_in = a + b"] y_in [label="y_in = c"] y_out [label="c = y_out"] f_call -> {x_in y_in y_out}; f_start [label="enter f"]; fx_in [label="x = x_in"]; fy_in [label="y = y_in"]; fy_out [label="y_out = y"]; f_start -> {fx_in fy_in fy_out}; f_call -> f_start [style=bold]; y_in -> f_start [style=invis]; x_in -> fx_in [style=dashed]; y_in -> fy_in [style=dashed]; fy_out -> y_out [constraint=false,style=dashed]; invis [height=0.001,width=0.001,style=invis]; invis2 [height=0.001,width=0.001,style=invis]; {rank=same; x_in y_in y_out invis}; {rank=same; fx_in fy_in invis2 fy_out}; {edge [style=invis]; x_in -> y_in -> invis -> y_out; fx_in -> fy_in -> invis2 -> fy_out; } }