qbe

Internal scc patchset buffer for QBE
Log | Files | Refs | README | LICENSE

commit 36635660b40573f6a0c19d50dfdd9277589030de
parent aad52241c88ad5327a8488c66dc906c8393c9c92
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date:   Sun, 27 Mar 2016 15:00:45 -0400

extract tests out of src

Diffstat:
AMakefile | 5+++++
Msrc/Makefile | 4++--
Dsrc/test/go.sh | 116-------------------------------------------------------------------------------
Rsrc/test/_alt.ssa -> test/_alt.ssa | 0
Rsrc/test/_dragon.ssa -> test/_dragon.ssa | 0
Rsrc/test/_fix1.ssa -> test/_fix1.ssa | 0
Rsrc/test/_fix2.ssa -> test/_fix2.ssa | 0
Rsrc/test/_fix3.ssa -> test/_fix3.ssa | 0
Rsrc/test/_fix4.ssa -> test/_fix4.ssa | 0
Rsrc/test/_live.ssa -> test/_live.ssa | 0
Rsrc/test/_rpo.ssa -> test/_rpo.ssa | 0
Rsrc/test/_spill1.ssa -> test/_spill1.ssa | 0
Rsrc/test/_spill2.ssa -> test/_spill2.ssa | 0
Rsrc/test/_spill3.ssa -> test/_spill3.ssa | 0
Rsrc/test/abi1.ssa -> test/abi1.ssa | 0
Rsrc/test/abi2.ssa -> test/abi2.ssa | 0
Rsrc/test/abi3.ssa -> test/abi3.ssa | 0
Rsrc/test/abi4.ssa -> test/abi4.ssa | 0
Rsrc/test/abi5.ssa -> test/abi5.ssa | 0
Rsrc/test/align.ssa -> test/align.ssa | 0
Rsrc/test/collatz.ssa -> test/collatz.ssa | 0
Rsrc/test/cprime.ssa -> test/cprime.ssa | 0
Rsrc/test/cup.ssa -> test/cup.ssa | 0
Rsrc/test/dark.ssa -> test/dark.ssa | 0
Rsrc/test/double.ssa -> test/double.ssa | 0
Rsrc/test/echo.ssa -> test/echo.ssa | 0
Rsrc/test/eucl.ssa -> test/eucl.ssa | 0
Rsrc/test/euclc.ssa -> test/euclc.ssa | 0
Rsrc/test/fpcnv.ssa -> test/fpcnv.ssa | 0
Atest/go.sh | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/test/loop.ssa -> test/loop.ssa | 0
Rsrc/test/mandel.ssa -> test/mandel.ssa | 0
Rsrc/test/max.ssa -> test/max.ssa | 0
Rsrc/test/prime.ssa -> test/prime.ssa | 0
Rsrc/test/puts10.ssa -> test/puts10.ssa | 0
Rsrc/test/sum.ssa -> test/sum.ssa | 0
36 files changed, 125 insertions(+), 118 deletions(-)

diff --git a/Makefile b/Makefile @@ -0,0 +1,5 @@ +.PHONY: all check +all: + @make -C src +check: all + test/go.sh all diff --git a/src/Makefile b/src/Makefile @@ -18,7 +18,7 @@ config.h: .PHONY: clean check syndoc clean: rm -f $(BIN) $(OBJ) -check: $(BIN) - test/go.sh all +check: + make -C .. check syndoc: unison -auto doc ssh://qcar@h/data/d/ssa-doc diff --git a/src/test/go.sh b/src/test/go.sh @@ -1,116 +0,0 @@ -#!/bin/sh - -TMP=/tmp/qbe.zzzz - -DRV=$TMP.c -ASM=$TMP.s -BIN=$TMP.bin -OUT=$TMP.out - -cleanup() { - rm -f $DRV $ASM $BIN $OUT -} - -extract() { - WHAT="$1" - FILE="$2" - - awk " - /^# >>> $WHAT/ { - p = 1 - next - } - /^# <<</ { - if (p) - p = 0 - } - p - " $FILE \ - | sed -e 's/# //' \ - | sed -e 's/#$//' -} - -once() { - T="$1" - - if ! test -f $T - then - echo "invalid test file $T" >&2 - exit 1 - fi - - echo "$T... " - - if ! ./qbe -o $ASM $T - then - echo "[qbe fail]" - return 1 - fi - - extract driver $T > $DRV - extract output $T > $OUT - - if test -s $DRV - then - LNK="$DRV $ASM" - else - LNK="$ASM" - fi - - if ! cc -g -o $BIN $LNK - then - echo "[cc fail]" - return 1 - fi - - if test -s $OUT - then - $BIN a b c | diff - $OUT - RET=$? - REASON="output" - else - $BIN a b c - RET=$? - REASON="returned $RET" - fi - - if test $RET -ne 0 - then - echo "[$REASON fail]" - return 1 - fi - - printf "\033[1A\033[45C[ok]\n" -} - - -#trap cleanup TERM QUIT - -if test -z "$1" -then - echo "usage: test/go.sh {all, SSAFILE}" 2>&1 - exit 1 -fi - -case $1 in - "all") - F=0 - for T in test/[!_]*.ssa - do - once $T - F=`expr $F + $?` - done - if test $F -ge 1 - then - echo - echo "$F test(s) failed!" - else - echo - echo "All is fine!" - fi - ;; - *) - once $1 - exit $? - ;; -esac diff --git a/src/test/_alt.ssa b/test/_alt.ssa diff --git a/src/test/_dragon.ssa b/test/_dragon.ssa diff --git a/src/test/_fix1.ssa b/test/_fix1.ssa diff --git a/src/test/_fix2.ssa b/test/_fix2.ssa diff --git a/src/test/_fix3.ssa b/test/_fix3.ssa diff --git a/src/test/_fix4.ssa b/test/_fix4.ssa diff --git a/src/test/_live.ssa b/test/_live.ssa diff --git a/src/test/_rpo.ssa b/test/_rpo.ssa diff --git a/src/test/_spill1.ssa b/test/_spill1.ssa diff --git a/src/test/_spill2.ssa b/test/_spill2.ssa diff --git a/src/test/_spill3.ssa b/test/_spill3.ssa diff --git a/src/test/abi1.ssa b/test/abi1.ssa diff --git a/src/test/abi2.ssa b/test/abi2.ssa diff --git a/src/test/abi3.ssa b/test/abi3.ssa diff --git a/src/test/abi4.ssa b/test/abi4.ssa diff --git a/src/test/abi5.ssa b/test/abi5.ssa diff --git a/src/test/align.ssa b/test/align.ssa diff --git a/src/test/collatz.ssa b/test/collatz.ssa diff --git a/src/test/cprime.ssa b/test/cprime.ssa diff --git a/src/test/cup.ssa b/test/cup.ssa diff --git a/src/test/dark.ssa b/test/dark.ssa diff --git a/src/test/double.ssa b/test/double.ssa diff --git a/src/test/echo.ssa b/test/echo.ssa diff --git a/src/test/eucl.ssa b/test/eucl.ssa diff --git a/src/test/euclc.ssa b/test/euclc.ssa diff --git a/src/test/fpcnv.ssa b/test/fpcnv.ssa diff --git a/test/go.sh b/test/go.sh @@ -0,0 +1,118 @@ +#!/bin/sh + +QBE=`readlink -f $0 | xargs dirname`/../src/qbe + +TMP=/tmp/qbe.zzzz + +DRV=$TMP.c +ASM=$TMP.s +BIN=$TMP.bin +OUT=$TMP.out + +cleanup() { + rm -f $DRV $ASM $BIN $OUT +} + +extract() { + WHAT="$1" + FILE="$2" + + awk " + /^# >>> $WHAT/ { + p = 1 + next + } + /^# <<</ { + if (p) + p = 0 + } + p + " $FILE \ + | sed -e 's/# //' \ + | sed -e 's/#$//' +} + +once() { + T="$1" + + if ! test -f $T + then + echo "invalid test file $T" >&2 + exit 1 + fi + + echo "$T... " + + if ! $QBE -o $ASM $T + then + echo "[qbe fail]" + return 1 + fi + + extract driver $T > $DRV + extract output $T > $OUT + + if test -s $DRV + then + LNK="$DRV $ASM" + else + LNK="$ASM" + fi + + if ! cc -g -o $BIN $LNK + then + echo "[cc fail]" + return 1 + fi + + if test -s $OUT + then + $BIN a b c | diff - $OUT + RET=$? + REASON="output" + else + $BIN a b c + RET=$? + REASON="returned $RET" + fi + + if test $RET -ne 0 + then + echo "[$REASON fail]" + return 1 + fi + + printf "\033[1A\033[45C[ok]\n" +} + + +#trap cleanup TERM QUIT + +if test -z "$1" +then + echo "usage: test/go.sh {all, SSAFILE}" 2>&1 + exit 1 +fi + +case $1 in + "all") + F=0 + for T in test/[!_]*.ssa + do + once $T + F=`expr $F + $?` + done + if test $F -ge 1 + then + echo + echo "$F test(s) failed!" + else + echo + echo "All is fine!" + fi + ;; + *) + once $1 + exit $? + ;; +esac diff --git a/src/test/loop.ssa b/test/loop.ssa diff --git a/src/test/mandel.ssa b/test/mandel.ssa diff --git a/src/test/max.ssa b/test/max.ssa diff --git a/src/test/prime.ssa b/test/prime.ssa diff --git a/src/test/puts10.ssa b/test/puts10.ssa diff --git a/src/test/sum.ssa b/test/sum.ssa