I'm trying to draw control flow graph of a program using Tikz and want to render a output like the image below But I'm unable to draw the curved edges in the given figure.
The Code used for the same(but for different program)
\begin{figure}
\begin{tikzpicture}
[%
->,
shorten >=2pt,
>=stealth,
node distance=1cm,
noname/.style={%
rounded corners=0.5em,
minimum width=5em,
minimum height=3em,
draw,
}
]
\node[noname] (1) {$Start : P$};
\node[noname] (2) [below=of 1] {$c=3$};
\node[noname] (3) [node distance=1cm and 3mm,below left=of 2] {$b = a*b$};
\node[noname] (4) [node distance=1cm and 3mm,below right=of 2]{print $a*c$};
\node[noname] (5) [node distance=3cm,below=of 4] {$a=b*c$};
\node[noname] (6) [below=of 3] {print $a*b$};
\node[noname] (7) [below=of 6] {$Call : P$};
\node[noname] (8) [node distance=1cm,below=of 7] {$Return : P$};
\node[noname] (9) [below right=of 8] {$Exits : P$};
\node[noname] (10) [node distance=6cm,right =of 1] {$Start : main$};
\node[noname] (11) [below=of 10] {$a = 3$};
\node[noname] (12) [below=of 11] {$b = a*b$};
\node[noname] (13) [below=of 12] {$Call : P$};
\node[noname] (14) [below=of 13] {$Return : P$};
\node[noname] (15) [below=of 14] {$c = a*b$};
\node[noname] (16) [below=of 15] {$Exit : main$};
\path (1) edge node {} (2)
(2) edge node {} (3)
(2) edge node {} (4)
(3) edge node {} (6)
(4) edge node {} (5)
(6) edge node {} (7)
(7) edge node {} (8)
(8) edge node {} (9)
(5) edge [bend left = 2em] node {} (9)
(10) edge node {} (11)
(11) edge node {} (12)
(12) edge node {} (13)
(13) edge node {} (14)
(14) edge node {} (15)
(15) edge node {} (16)
(13) edge [bend right = 1.4em] node {} (1)
(9) edge [bend left = 2.1em] node {} (14)
\end{tikzpicture}
\caption{Supergraph for given program}
\label{fig:1}
\end{figure}
But it outputs image like this:
How can I change the edges from node Call : P to node Start : P and node Exit : P to node Return : P to the one drawn in the desired figure above
dotted
to edge option), or about modifying the direction the arrows enter/leave the nodes?