Home | History | Annotate | Download | only in lit_tests
      1 #!/bin/bash
      2 
      3 ulimit -s 8192
      4 set -e # fail on any error
      5 
      6 ROOTDIR=$(dirname $0)/..
      7 BLACKLIST=$ROOTDIR/lit_tests/Helpers/blacklist.txt
      8 
      9 # Assume clang and clang++ are in path.
     10 : ${CC:=clang}
     11 : ${CXX:=clang++}
     12 : ${FILECHECK:=FileCheck}
     13 
     14 # TODO: add testing for all of -O0...-O3
     15 CFLAGS="-fsanitize=thread -fsanitize-blacklist=$BLACKLIST -fPIE -O1 -g -fno-builtin -Wall"
     16 LDFLAGS="-pie -lpthread -ldl $ROOTDIR/rtl/libtsan.a"
     17 
     18 test_file() {
     19   SRC=$1
     20   COMPILER=$2
     21   echo ----- TESTING $(basename $1)
     22   OBJ=$SRC.o
     23   EXE=$SRC.exe
     24   $COMPILER $SRC $CFLAGS -c -o $OBJ
     25   $COMPILER $OBJ $LDFLAGS -o $EXE
     26   RES=$($EXE 2>&1 || true)
     27   printf "%s\n" "$RES" | $FILECHECK $SRC
     28   if [ "$3" == "" ]; then
     29     rm -f $EXE $OBJ
     30   fi
     31 }
     32 
     33 if [ "$1" == "" ]; then
     34   for c in $ROOTDIR/lit_tests/*.{c,cc}; do
     35     if [[ $c == */failing_* ]]; then
     36       echo SKIPPING FAILING TEST $c
     37       continue
     38     fi
     39     COMPILER=$CXX
     40     case $c in
     41       *.c) COMPILER=$CC
     42     esac
     43     test_file $c $COMPILER &
     44   done
     45   for job in `jobs -p`; do
     46     wait $job || exit 1
     47   done
     48 else
     49   test_file $ROOTDIR/lit_tests/$1 $CXX "DUMP"
     50 fi
     51