#!/bin/bash # This script is a helper to bisect GCC regressions. # Inputs (as env. variables): # EXP: name of .exp file to run # TESTNAME: name of test to run # GOOD # BAD # TARGET # CPU # FPU # MODE # SIMU # TARGETBOARD: additional test flags # Sample usage: # EXP=advsimd-intrinsics.exp TESTNAME=vduph_lane.c TARGET=aarch64-linux-gnu GOOD=242941 BAD=242954 ./abe-bisect.sh # Check if the variable NAME is set check_set() { name=$1 eval val=\$${name} [ x$val = x ] && echo $1 not set && exit 1 } check_set EXP check_set TESTNAME check_set GOOD check_set BAD check_set TARGET #check_set CPU #check_set FPU #check_set MODE #check_set SIMU #check_set TARGETBOARD rundir=`pwd -P` mydir="$(dirname $0)" cd "${mydir}" mydir="$(pwd)" cd ${rundir} git clone http://git.linaro.org/toolchain/abe.git ABE=${rundir}/abe ${ABE}/configure --with-git-reference-dir=/home/tcwg-buildslave/snapshots-ref # Checkout GCC master ${ABE}/abe.sh --target $TARGET gcc=gcc.git~master --checkout all cd snapshots/gcc.git~master git bisect reset git reset --hard git bisect start --no-checkout GOODSHA1=`git log --format=format:"%H" --grep=trunk@${GOOD} master` BADSHA1=`git log --format=format:"%H" --grep=trunk@${BAD} master` echo GOOD: $GOODSHA1 echo BAD: $BADSHA1 git bisect good ${GOODSHA1} git bisect bad ${BADSHA1} RUNDIR=${rundir} ABE=${ABE} EXP=${EXP} TESTNAME=${TESTNAME} TARGET=${TARGET} CPU=${CPU} FPU=${FPU} MODE=${MODE} SIMU=${SIMU} TARGETBOARD=${TARGETBOARD} git bisect run ${mydir}/abe-bisect-helper.sh