2003-10-05 17:48:53 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
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
|
|
|
|
|
2020-07-05 20:01:50 +08:00
|
|
|
rm -f tcc.sum tcc.fail
|
|
|
|
nb_ok="0"
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
nb_skipped="0"
|
2003-10-05 17:48:53 +08:00
|
|
|
nb_failed="0"
|
2020-07-05 20:01:50 +08:00
|
|
|
nb_exe_failed="0"
|
2003-10-05 17:48:53 +08:00
|
|
|
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
# 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"
|
|
|
|
|
2003-10-05 17:48:53 +08:00
|
|
|
for src in $TESTSUITE_PATH/compile/*.c ; do
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
echo $TCC -o $RUNTIME_DIR/tst.o -c $src
|
|
|
|
$TCC -o $RUNTIME_DIR/tst.o -c $src >> tcc.fail 2>&1
|
2010-05-26 19:45:16 +08:00
|
|
|
if [ "$?" = "0" ] ; then
|
2020-07-05 20:01:50 +08:00
|
|
|
result="PASS"
|
|
|
|
nb_ok=$(( $nb_ok + 1 ))
|
2003-10-05 17:48:53 +08:00
|
|
|
else
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
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
|
2003-10-05 17:48:53 +08:00
|
|
|
fi
|
|
|
|
echo "$result: $src" >> tcc.sum
|
|
|
|
done
|
|
|
|
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
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
|
2010-05-26 19:45:16 +08:00
|
|
|
if [ "$?" = "0" ] ; then
|
2020-07-05 20:01:50 +08:00
|
|
|
result="PASS"
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
if $RUNTIME_DIR/tst >> tcc.fail 2>&1
|
2020-07-05 20:01:50 +08:00
|
|
|
then
|
|
|
|
result="PASS"
|
|
|
|
nb_ok=$(( $nb_ok + 1 ))
|
|
|
|
else
|
|
|
|
result="FAILEXE"
|
|
|
|
nb_exe_failed=$(( $nb_exe_failed + 1 ))
|
|
|
|
fi
|
2003-10-05 17:48:53 +08:00
|
|
|
else
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
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
|
2003-10-05 17:48:53 +08:00
|
|
|
fi
|
|
|
|
echo "$result: $src" >> tcc.sum
|
|
|
|
done
|
|
|
|
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
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
|
|
|
|
|
2020-07-05 20:01:50 +08:00
|
|
|
echo "$nb_ok test(s) ok." >> tcc.sum
|
|
|
|
echo "$nb_ok test(s) ok."
|
gcctestsuite: Make the script usable on more systems, skip some tests
The script was expecting gcc-3.2 in a specific directory,
works only, when building tcc in the source directory
and creates >3200 files in /tmp (probably a SSD).
Now gcctestsuite.sh works much better.
* use TESTSUITE_PATH, to tell the script the location, where the actual
gcc.c-torture directory is
* work also, when tcc was build in a separate build directory.
use TCC_SOURCE_PATH, when guessing the tcc source directory does not work
* use RUNTIME_DIR to redirect compiler output
(default: XDG_RUNTIME_DIR, then /tmp)
* skip tests for features not implemented in tcc ( *_builtin_*, _Complex )
--
Regards, Detlef
2022-10-12 06:59:02 +08:00
|
|
|
echo "$nb_skipped test(s) skipped." >> tcc.sum
|
|
|
|
echo "$nb_skipped test(s) skipped."
|
2003-10-05 17:48:53 +08:00
|
|
|
echo "$nb_failed test(s) failed." >> tcc.sum
|
|
|
|
echo "$nb_failed test(s) failed."
|
2020-07-05 20:01:50 +08:00
|
|
|
echo "$nb_exe_failed test(s) exe failed." >> tcc.sum
|
|
|
|
echo "$nb_exe_failed test(s) exe failed."
|