diff options
Diffstat (limited to 'test-suite/run.sh')
-rwxr-xr-x | test-suite/run.sh | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/test-suite/run.sh b/test-suite/run.sh new file mode 100755 index 0000000..a4313bb --- /dev/null +++ b/test-suite/run.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash + +# This script helps you run one or all tests in the LLVM test-suite +# It automatically detects the CPU, the number of cores and uses +# command line options to set up debug or special builds. +# +# The script assumes the install directory is at ../install. It's handy to +# have a symlink to whatever directory you're building to, either a build +# directory or a release/rc1/Phase3/.../*.install + +syntax="Syntax: $0 [-j cpus] [-g(cc)] [-l(ibc++/compiler-rt)] [-d(ebug)] [-t(est) <full-test-name>] [-s(mall)] [-b(enchmark-only)] [-p(erf)]" +CORE=`grep "CPU part" /proc/cpuinfo | awk '{print $4}'` +if [[ $CORE = '0xc08' ]]; then + CORE="-mcpu=cortex-a8" +else if [[ $CORE = '0xc09' ]]; then + CORE="-mcpu=cortex-a9" +else if [[ $CORE = '0xc0f' ]]; then + CORE="-mcpu=cortex-a15" +else if [[ $CORE = '0xd03' ]]; then + CORE="-mcpu=cortex-a53" +else if [[ $CORE = '0xd07' ]]; then + CORE="-mcpu=cortex-a57" +else + CORE='' +fi fi fi fi fi +ROOT=`pwd` +CPUS=`grep -c processor /proc/cpuinfo` +CC=$ROOT/../install/bin/clang +CXX=$ROOT/../install/bin/clang++ +CFLAGS="$CFLAGS $CORE" +CXXFLAGS="$CXXFLAGS $CORE" +LDFLAGS="$LDFLAGS" +TEST= +SMALL= +BENCH= +PERF=false + +while getopts "gldt:j:sbp" opt; do + case $opt in + l) + CFLAGS="$CFLAGS --rtlib=compiler-rt -lc++ -funwind-tables" + CXXFLAGS="$CXXFLAGS --rtlib=compiler-rt -stdlib=libc++ -funwind-tables" + LDFLAGS="$LDFLAGS -L/usr/local/lib -stdlib=libc++ -lc++abi" + ;; + d) + DEBUG="--build-mode Debug --optimize-option -O1" + ;; + t) + TEST="--only-test $OPTARG" + ;; + j) + CPUS="$OPTARG" + ;; + g) + CC=gcc + CXX=g++ + ;; + s) + SMALL="--small" + ;; + b) + BENCH="--benchmarking-only --build-threads=$CPUS" + BENCH="$BENCH --threads=1" + ;; + p) + PERF=true + ;; + *) + echo -e $syntax + exit 1 + ;; + esac +done + +if [ ! -z "$BENCH" ]; then + if $PERF && perf --help > /dev/null; then + # Only use perf is we have it installed and it works + BENCH="$BENCH --use-perf --multisample=4" + else + # Non-perf runs are a lot noisier + BENCH="$BENCH --multisample=8" + fi + # Either way, we want reproducible results + CPUS=1 +fi + +rm -rf sandbox/build + +# CC and CXX need to be duplicated because the --cc only affects the tests +# themselves, not the extra tools, and CFLAGS apply to both, which may break +# if you chose Clang-specific ones +LD_LIBRARY_PATH=$LD_LIBRARY_PATH \ +CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS \ +CC=$CC CXX=$CXX \ +./sandbox/bin/python sandbox/bin/lnt runtest \ + nt \ + $TEST \ + $DEBUG \ + $SMALL \ + $BENCH \ + -j$CPUS \ + --no-timestamp \ + --sandbox sandbox \ + --test-suite $ROOT/test-suite \ + --cc $CC \ + --cxx $CXX + +./failures.sh $ROOT/sandbox/build/test.log +if [ $? != 0 ]; then + exit 1 +fi |