summary refs log tree commit diff
path: root/lisc/tools
diff options
context:
space:
mode:
Diffstat (limited to 'lisc/tools')
-rwxr-xr-xlisc/tools/abitest.sh32
1 files changed, 20 insertions, 12 deletions
diff --git a/lisc/tools/abitest.sh b/lisc/tools/abitest.sh
index 096c4ef..0bd7c5b 100755
--- a/lisc/tools/abitest.sh
+++ b/lisc/tools/abitest.sh
@@ -9,21 +9,29 @@ failure() {
 	exit 1
 }
 
+once() {
+	if test -z "$1"
+	then
+		$OCAML tools/abi.ml $TMP c ssa
+	else
+		$OCAML tools/abi.ml -s $1 $TMP c ssa
+	fi
+
+	./$QBE -o $TMP/callee.s $TMP/callee.ssa ||
+		failure "qbe"
+
+	c99 -g -o $TMP/abitest $TMP/caller.c $TMP/callee.s ||
+		failure "cc + linking"
+
+	$TMP/abitest ||
+		failure "runtime"
+}
+
 if ! test -x $QBE
 then
 	echo "error: I must run in the directory containing $QBE." >&2
 	exit 1
 fi
 
-	$OCAML tools/abi.ml $TMP c ssa
-
-	./$QBE -o $TMP/callee.s $TMP/callee.ssa
-		|| failure "qbe"
-
-	c99 -g -o $TMP/abitest $TMP/caller.c $TMP/callee.s
-		|| failure "cc + linking"
-
-	$TMP/abitest
-		|| failure "runtime"
-
-rm -fr $TMP
+once "$1"
+#rm -fr $TMP