Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
Dmitry Vyukov | d004b99 | 2012-05-14 15:25:35 +0000 | [diff] [blame] | 3 | ulimit -s 8192 |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 4 | set -e # fail on any error |
| 5 | |
Kostya Serebryany | 0e6705e | 2012-05-11 14:58:20 +0000 | [diff] [blame] | 6 | ROOTDIR=$(dirname $0)/.. |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 7 | |
| 8 | # Assuming clang is in path. |
| 9 | CC=clang |
| 10 | CXX=clang++ |
| 11 | |
| 12 | # TODO: add testing for all of -O0...-O3 |
Richard Smith | 7793091 | 2012-11-06 02:31:42 +0000 | [diff] [blame] | 13 | CFLAGS="-fsanitize=thread -fPIE -O1 -g -fno-builtin -Wall" |
Kostya Serebryany | 5b7cb1d | 2012-05-10 15:10:03 +0000 | [diff] [blame] | 14 | LDFLAGS="-pie -lpthread -ldl $ROOTDIR/rtl/libtsan.a" |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 15 | |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 16 | test_file() { |
| 17 | SRC=$1 |
| 18 | COMPILER=$2 |
Kostya Serebryany | 0e6705e | 2012-05-11 14:58:20 +0000 | [diff] [blame] | 19 | echo ----- TESTING $(basename $1) |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 20 | OBJ=$SRC.o |
| 21 | EXE=$SRC.exe |
| 22 | $COMPILER $SRC $CFLAGS -c -o $OBJ |
Dmitry Vyukov | d004b99 | 2012-05-14 15:25:35 +0000 | [diff] [blame] | 23 | $COMPILER $OBJ $LDFLAGS -o $EXE |
Dmitry Vyukov | 9c7bcfe | 2012-12-18 12:19:50 +0000 | [diff] [blame] | 24 | RES=$($EXE 2>&1 || true) |
Kostya Serebryany | 0e6705e | 2012-05-11 14:58:20 +0000 | [diff] [blame] | 25 | printf "%s\n" "$RES" | FileCheck $SRC |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 26 | if [ "$3" == "" ]; then |
Kostya Serebryany | 0e6705e | 2012-05-11 14:58:20 +0000 | [diff] [blame] | 27 | rm -f $EXE $OBJ |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 28 | fi |
| 29 | } |
| 30 | |
| 31 | if [ "$1" == "" ]; then |
Alexey Samsonov | 341e5bc | 2012-09-18 07:23:54 +0000 | [diff] [blame] | 32 | for c in $ROOTDIR/lit_tests/*.{c,cc}; do |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 33 | if [[ $c == */failing_* ]]; then |
| 34 | echo SKIPPING FAILING TEST $c |
| 35 | continue |
| 36 | fi |
Kostya Serebryany | 0e6705e | 2012-05-11 14:58:20 +0000 | [diff] [blame] | 37 | COMPILER=$CXX |
| 38 | case $c in |
| 39 | *.c) COMPILER=$CC |
| 40 | esac |
Dmitry Vyukov | 0c40a56 | 2012-10-02 11:51:40 +0000 | [diff] [blame] | 41 | test_file $c $COMPILER & |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 42 | done |
Dmitry Vyukov | 0c40a56 | 2012-10-02 11:51:40 +0000 | [diff] [blame] | 43 | for job in `jobs -p`; do |
| 44 | wait $job || exit 1 |
| 45 | done |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 46 | else |
Alexey Samsonov | 341e5bc | 2012-09-18 07:23:54 +0000 | [diff] [blame] | 47 | test_file $ROOTDIR/lit_tests/$1 $CXX "DUMP" |
Kostya Serebryany | ff15ef0 | 2012-05-10 14:18:22 +0000 | [diff] [blame] | 48 | fi |