#!/bin/sh
# Given the name of a file containing output generated by mmc --debug-opt,
# e.g. Out, generate a series of files Out.stage.N, each containing the
# output of one stage of the optimization process.
#
# This script is most useful if the input file was generated by compiling
# a Mercury module containing only one procedure.

if test $# != 1
then
	echo "Usage: optstages filename"
	exit 1
fi

TERMCAP=/etc/termcap; export TERMCAP
cp $1 .tmp

/bin/rm $1.stage.* > /dev/null 2>&1

# get rid of everything before
ed - .tmp > /dev/null << END
/^before optimization/
1,-d
/^% Optimizing/
1,-w $1.stage.0
1,-d
w
q
END
echo "created $1.stage.0"

i=1
while test `egrep '^after' .tmp | wc -l` -gt 1
do
	ed - .tmp > /dev/null << END
	/^after/
	/^% Optimizing/
	1,-w $1.stage.$i
	1,-d
	w
	q
END
	echo "created $1.stage.$i"
	i=`expr $i + 1`
done

mv .tmp $1.stage.$i
echo "created $1.stage.$i"

exit 0
