#!/bin/sh
# Flags:
-# --no-clean: don't make clean first, just carry on from
-# a previous interrupted validation run
-# --testuite-only: don't build the compiler, just run
-# the test suite
+# --no-clean: don't make clean first, just carry on from
+# a previous interrupted validation run
+# --testsuite-only: don't build the compiler, just run
+# the test suite
+# --hpc: build stage2 with -fhpc, and see how much of the
+# compiler the test suite covers.
+# 2008-07-01: 63% slower than the default.
+# HTML generated here: testsuite/hpc_output/hpc_index.html
+# --fast: Default. Opposite to --slow.
+# --slow: Build stage2 with -DDEBUG.
+# 2008-07-01: 14% slower than the default.
set -e
no_clean=0
testsuite_only=0
+hpc=NO
+slow=NO
while [ $# -gt 0 ]
do
--testsuite-only)
testsuite_only=1
;;
+ --hpc)
+ hpc=YES
+ ;;
+ --slow)
+ slow=YES
+ ;;
+ --fast)
+ slow=NO
+ ;;
*)
echo "Bad argument: $1" >&2
exit 1;;
fi
sh boot
-./configure $config_args
+./configure "--prefix=`pwd`/inst" $config_args
+
+thisdir=`utils/pwd/pwd forwardslash`
-make Validating=YES -j$threads
+make Validating=YES -j$threads ValidateHpc=$hpc ValidateSlow=$slow
fi # testsuite-only
-# ToDo: use THREADS=$threads, see #1558
-make Validating=YES -C testsuite/tests/ghc-regress fast stage=2 CLEANUP=1 2>&1 | tee testlog
+if [ "$hpc" = YES ]
+then
+ # XXX With threads we'd need to give a different tix file to each thread
+ # and then sum them up at the end
+ threads=1
+ HPCTIXFILE=$thisdir/testsuite/hpc_output/ghc.tix
+ export HPCTIXFILE
+ rm -f $HPCTIXFILE
+fi
+
+make Validating=YES -C testsuite/tests/ghc-regress fast stage=2 CLEANUP=1 THREADS=$threads 2>&1 | tee testlog
+
+if [ "$hpc" = YES ]
+then
+ utils/hpc/hpc markup --hpcdir=. --srcdir=compiler --srcdir=testsuite/hpc_output --destdir=testsuite/hpc_output testsuite/hpc_output/ghc.tix
+fi
echo "-------------------------------------------------------------------"
if