This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: can't find VCG viewer


Sunzir Deepur wrote on 03/14/07 05:36:

> any idea where I can find a (free) graphical VCG viewer suitable
> for gcc's vcg outputs ?

I'd recommend the attached script.  Feed the output to GraphViz.  The
script may need changes if you are using RTL dumps.
#!/bin/sh
#
# (C) 2005 Free Software Foundation
# Contributed by Diego Novillo <dnovillo@redhat.com>.
#
# This script is Free Software, and it can be copied, distributed and
# modified as defined in the GNU General Public License.  A copy of
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html

if [ "$1" = "" ] ; then
    echo "usage: $0 file"
    echo
    echo "Generates a GraphViz .dot graph file from 'file'."
    echo "It assumes that 'file' has been generated with -fdump-tree-...-blocks"
    echo
    exit 1
fi

file=$1
out=$file.dot
echo "digraph cfg {"		> $out
echo "	node [shape=box]"	>>$out
echo '	size="11,8.5"'		>>$out
echo 				>>$out
(grep -E '# BLOCK|# PRED:|# SUCC:' $file |				\
	sed -e 's:\[\([0-9\.%]*\)*\]::g;s:([a-z_,]*)::g' |		\
	awk '{	#print $0;						\
		if ($2 == "BLOCK")					\
		    {							\
			bb = $3;					\
			print "\t", bb, "[label=\"", bb, "\", style=filled, color=gray]";		\
		    }							\
		else if ($2 == "PRED:")					\
		    {							\
			for (i = 3; i <= NF; i++)			\
			    print "\t", $i, "->", bb, ";";		\
		    }							\
	    }')			>> $out
echo "}"			>> $out

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]