@ -1,31 +1,114 @@
#!/bin/sh
TESTSUITE_PATH = $HOME /gcc/gcc-3.2/gcc/testsuite/gcc.c-torture
TCC = "./tcc -B. -I. -DNO_TRAMPOLINES"
if [ -z " $TESTSUITE_PATH " ]
then
if [ -d " $HOME /gcc/gcc-3.2/gcc/testsuite/gcc.c-torture " ]
then
TESTSUITE_PATH = " $HOME /gcc/gcc-3.2/gcc/testsuite/gcc.c-torture "
fi
fi
if [ -z " $TESTSUITE_PATH " ]
then
echo "gcc testsuite not found."
echo "define TESTSUITE_PATH to point to the gcc.c-torture directory"
exit 1
fi
if [ -z " $TCC_SOURCE_PATH " ]
then
if [ -f "include/tccdefs.h" ]
then
TCC_SOURCE_PATH = "."
elif [ -f "../include/tccdefs.h" ]
then
TCC_SOURCE_PATH = ".."
elif [ -f "../tinycc/include/tccdefs.h" ]
then
TCC_SOURCE_PATH = "../tinycc"
fi
fi
if [ -z " $RUNTIME_DIR " ]
then
RUNTIME_DIR = $XDG_RUNTIME_DIR
fi
if [ -z " $RUNTIME_DIR " ]
then
RUNTIME_DIR = "/tmp"
fi
if [ -z " $CC " ]
then
if [ -z " $TCC_SOURCE_PATH " ]
then
echo "tcc not found."
echo "define TCC_SOURCE_PATH to point to the tcc source path"
exit 1
fi
TCC = " ./tcc -B. -I $TCC_SOURCE_PATH / -I $TCC_SOURCE_PATH /include -DNO_TRAMPOLINES "
else
TCC = " $CC -O1 -Wno-implicit-int $CFLAGS "
fi
rm -f tcc.sum tcc.fail
nb_ok = "0"
nb_skipped = "0"
nb_failed = "0"
nb_exe_failed = "0"
# skip some failed tests not implemented in tcc
# builtin: gcc "__builtins_*"
# ieee: gcc "__builtins_*" in the ieee directory
# complex: C99 "_Complex" and gcc "__complex__"
# misc: stdc features, other arch, gcc extensions (example: gnu_inline in c89)
#
old_pwd = "`pwd`"
cd " $TESTSUITE_PATH "
skip_builtin = "`grep " _builtin_" compile/*.c execute/*.c execute/ieee/*.c | cut -d ':' -f1 | cut -d '/' -f2 | sort -u `"
skip_ieee = "`grep " _builtin_" execute/ieee/*.c | cut -d ':' -f1 | cut -d '/' -f3 | sort -u `"
skip_complex = "`grep -i " _Complex" compile/*.c execute/*.c execute/ieee/*.c | cut -d ':' -f1 | cut -d '/' -f2 | sort -u `"
skip_misc = " 20000120-2.c mipscop-1.c mipscop-2.c mipscop-3.c mipscop-4.c
fp-cmp-4f.c fp-cmp-4l.c fp-cmp-8f.c fp-cmp-8l.c pr38016.c "
cd " $old_pwd "
for src in $TESTSUITE_PATH /compile/*.c ; do
echo $TCC -o /tmp/tst.o -c $src
$TCC -o /tmp/tst.o -c $src >> tcc.fail 2>& 1
echo $TCC -o $RUNTIME_DIR /tst.o -c $src
$TCC -o $RUNTIME_DIR /tst.o -c $src >> tcc.fail 2>& 1
if [ " $? " = "0" ] ; then
result = "PASS"
nb_ok = $(( $nb_ok + 1 ))
else
result = "FAIL"
nb_failed = $(( $nb_failed + 1 ))
base = ` basename " $src " `
skip_me = " `echo $skip_builtin $skip_ieee $skip_complex $skip_misc | grep -w $base ` "
if [ -n " $skip_me " ]
then
result = "SKIP"
nb_skipped = $(( $nb_skipped + 1 ))
else
result = "FAIL"
nb_failed = $(( $nb_failed + 1 ))
fi
fi
echo " $result : $src " >> tcc.sum
done
for src in $TESTSUITE_PATH /execute/*.c ; do
echo $TCC $src -o /tmp/tst -lm
$TCC $src -o /tmp/tst -lm >> tcc.fail 2>& 1
if [ -f " $RUNTIME_DIR /tst.o " ]
then
rm -f " $RUNTIME_DIR /tst.o "
fi
for src in $TESTSUITE_PATH /execute/*.c $TESTSUITE_PATH /execute/ieee/*.c ; do
echo $TCC $src -o $RUNTIME_DIR /tst -lm
$TCC $src -o $RUNTIME_DIR /tst -lm >> tcc.fail 2>& 1
if [ " $? " = "0" ] ; then
result = "PASS"
if /tmp/tst >> tcc.fail 2>& 1
if $RUNTIME_DIR /tst >> tcc.fail 2>& 1
then
result = "PASS"
nb_ok = $(( $nb_ok + 1 ))
@ -34,14 +117,34 @@ for src in $TESTSUITE_PATH/execute/*.c ; do
nb_exe_failed = $(( $nb_exe_failed + 1 ))
fi
else
result = "FAIL"
nb_failed = $(( $nb_failed + 1 ))
base = ` basename " $src " `
skip_me = " `echo $skip_builtin $skip_ieee $skip_complex $skip_misc | grep -w $base ` "
if [ -n " $skip_me " ]
then
result = "SKIP"
nb_skipped = $(( $nb_skipped + 1 ))
else
result = "FAIL"
nb_failed = $(( $nb_failed + 1 ))
fi
fi
echo " $result : $src " >> tcc.sum
done
if [ -f " $RUNTIME_DIR /tst.o " ]
then
rm -f " $RUNTIME_DIR /tst.o "
fi
if [ -f " $RUNTIME_DIR /tst " ]
then
rm -f " $RUNTIME_DIR /tst "
fi
echo " $nb_ok test(s) ok. " >> tcc.sum
echo " $nb_ok test(s) ok. "
echo " $nb_skipped test(s) skipped. " >> tcc.sum
echo " $nb_skipped test(s) skipped. "
echo " $nb_failed test(s) failed. " >> tcc.sum
echo " $nb_failed test(s) failed. "
echo " $nb_exe_failed test(s) exe failed. " >> tcc.sum