tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] [PATCH] arm-asm-testsuite.sh: Refactor to allow bigger te


From: Danny Milosavljevic
Subject: [Tinycc-devel] [PATCH] arm-asm-testsuite.sh: Refactor to allow bigger tests
Date: Sat, 13 Feb 2021 14:35:34 +0100

---
 tests/arm-asm-testsuite.sh | 78 ++++++++++++++++++++++++--------------
 1 file changed, 50 insertions(+), 28 deletions(-)

diff --git a/tests/arm-asm-testsuite.sh b/tests/arm-asm-testsuite.sh
index 61c5dad..ae36eb1 100755
--- a/tests/arm-asm-testsuite.sh
+++ b/tests/arm-asm-testsuite.sh
@@ -2,6 +2,53 @@
 
 set -e
 
+# Parameter 1: source file name
+# Parameter 2: unique test id
+# Return value: Whether instruction worked in GNU as
+# Side effect: Files in ${state}: "expected-"*, "got-"*, maybe "ok-"*
+run_test() {
+       local s
+       local err
+       local as_object
+       local tcc_object
+       local expected
+       local got
+       local source_file
+       source_file="$1"
+       s="$2"
+       #echo ".syntax unified" > a.s
+       err="`mktemp --suffix=-stderr.log`"
+       as_object="${state}/as-$s.o"
+       tcc_object="${state}/tcc-$s.o"
+       expected="${state}/expected-$s"
+       got="${state}/got-$s"
+       if "${CROSS_COMPILE}as" -mlittle-endian ${as_opts} -o "${as_object}" 
"${source_file}" 2>"${err}"
+       then
+               cat "${err}"
+               rm -f "${err}"
+               "${CROSS_COMPILE}objdump" -S "${as_object}" |grep "^[ ]*0:" 
>"${expected}"
+               if ${TCC} -o "${tcc_object}" -c "${source_file}"
+               then
+                       "${CROSS_COMPILE}objdump" -S "${tcc_object}" |grep "^[ 
]*0:" >"${got}"
+                       if diff -u "${got}" "${expected}"
+                       then
+                               touch "${state}/ok-$s"
+                       else
+                               echo "warning: '$s' did not work in tcc (see 
above)">&2
+                       fi
+               else
+                       rm -f "${tcc_object}"
+                       echo "warning: '$s' did not work in tcc">&2
+               fi
+               rm -f "${err}"
+               return 0
+       else # GNU as can't do it either--so we don't care
+               rm -f "${as_object}"
+       fi
+       rm -f "${err}"
+       return 1
+}
+
 # Note: "{r3}" is definitely different--but would complicate the assembler.
 
 state="`mktemp -d`"
@@ -166,38 +213,13 @@ do
                     "d4, s3" \
                    ""
        do
-               #echo ".syntax unified" > a.s
-               err="`mktemp --suffix=-stderr.log`"
-               as_object="${state}/as-$s $args.o"
-               tcc_object="${state}/tcc-$s $args.o"
-               expected="${state}/expected-$s $args"
-               got="${state}/got-$s $args"
-               if echo "$s $args" | "${CROSS_COMPILE}as" -mlittle-endian 
${as_opts} -o "${as_object}" - 2>"${err}"
+               src="${state}/src-${s} ${args}.s"
+               echo "${s} ${args}" > "${src}"
+               if run_test "${src}" "${s} ${args}"
                then
-                       cat "${err}"
-                       rm -f "${err}"
                        total_count=`expr $total_count + 1`
-                       "${CROSS_COMPILE}objdump" -S "${as_object}" |grep "^[ 
]*0:" >"${expected}"
-
-                       #echo '__asm__("'"$s ${args}"'");' > "${csource}"
-                       if echo '__asm__("'"$s ${args}"'");'| ${TCC} -o 
"${tcc_object}" -c -
-                       then
-                               "${CROSS_COMPILE}objdump" -S "${tcc_object}" 
|grep "^[ ]*0:" >"${got}"
-                               if diff -u "${got}" "${expected}"
-                               then
-                                       touch "${state}/ok-$s $args"
-                               else
-                                       echo "warning: '$s $args' did not work 
in tcc (see above)">&2
-                               fi
-                       else
-                               rm -f "${tcc_object}"
-                               echo "warning: '$s $args' did not work in 
tcc">&2
-                       fi
                        ok=1
-               else # GNU as can't do it either--so we don't care
-                       rm -f "${as_object}"
                fi
-               rm -f "${err}"
        done
        if [ "${ok}" -eq "0" ]
        then



reply via email to

[Prev in Thread] Current Thread [Next in Thread]