blob: d21c9a797ad3fd37ee79ceb4eb2d88740b760064 [file] [log] [blame]
Kostya Serebryanyff15ef02012-05-10 14:18:22 +00001#!/bin/bash
2
Dmitry Vyukovd004b992012-05-14 15:25:35 +00003ulimit -s 8192
Kostya Serebryanyff15ef02012-05-10 14:18:22 +00004set -e # fail on any error
5
Kostya Serebryany0e6705e2012-05-11 14:58:20 +00006ROOTDIR=$(dirname $0)/..
Alexey Samsonov84748432012-12-28 10:06:26 +00007BLACKLIST=$ROOTDIR/lit_tests/Helpers/blacklist.txt
Kostya Serebryanyff15ef02012-05-10 14:18:22 +00008
9# Assuming clang is in path.
10CC=clang
11CXX=clang++
12
13# TODO: add testing for all of -O0...-O3
Alexey Samsonov84748432012-12-28 10:06:26 +000014CFLAGS="-fsanitize=thread -fsanitize-blacklist=$BLACKLIST -fPIE -O1 -g -fno-builtin -Wall"
Kostya Serebryany5b7cb1d2012-05-10 15:10:03 +000015LDFLAGS="-pie -lpthread -ldl $ROOTDIR/rtl/libtsan.a"
Kostya Serebryanyff15ef02012-05-10 14:18:22 +000016
Kostya Serebryanyff15ef02012-05-10 14:18:22 +000017test_file() {
18 SRC=$1
19 COMPILER=$2
Kostya Serebryany0e6705e2012-05-11 14:58:20 +000020 echo ----- TESTING $(basename $1)
Kostya Serebryanyff15ef02012-05-10 14:18:22 +000021 OBJ=$SRC.o
22 EXE=$SRC.exe
23 $COMPILER $SRC $CFLAGS -c -o $OBJ
Dmitry Vyukovd004b992012-05-14 15:25:35 +000024 $COMPILER $OBJ $LDFLAGS -o $EXE
Dmitry Vyukov9c7bcfe2012-12-18 12:19:50 +000025 RES=$($EXE 2>&1 || true)
Kostya Serebryany0e6705e2012-05-11 14:58:20 +000026 printf "%s\n" "$RES" | FileCheck $SRC
Kostya Serebryanyff15ef02012-05-10 14:18:22 +000027 if [ "$3" == "" ]; then
Kostya Serebryany0e6705e2012-05-11 14:58:20 +000028 rm -f $EXE $OBJ
Kostya Serebryanyff15ef02012-05-10 14:18:22 +000029 fi
30}
31
32if [ "$1" == "" ]; then
Alexey Samsonov341e5bc2012-09-18 07:23:54 +000033 for c in $ROOTDIR/lit_tests/*.{c,cc}; do
Kostya Serebryanyff15ef02012-05-10 14:18:22 +000034 if [[ $c == */failing_* ]]; then
35 echo SKIPPING FAILING TEST $c
36 continue
37 fi
Kostya Serebryany0e6705e2012-05-11 14:58:20 +000038 COMPILER=$CXX
39 case $c in
40 *.c) COMPILER=$CC
41 esac
Dmitry Vyukov0c40a562012-10-02 11:51:40 +000042 test_file $c $COMPILER &
Kostya Serebryanyff15ef02012-05-10 14:18:22 +000043 done
Dmitry Vyukov0c40a562012-10-02 11:51:40 +000044 for job in `jobs -p`; do
45 wait $job || exit 1
46 done
Kostya Serebryanyff15ef02012-05-10 14:18:22 +000047else
Alexey Samsonov341e5bc2012-09-18 07:23:54 +000048 test_file $ROOTDIR/lit_tests/$1 $CXX "DUMP"
Kostya Serebryanyff15ef02012-05-10 14:18:22 +000049fi