Crash in ia32 floating point code emitter.
[libfirm] / ir / be / test / makereport.sh
1 #!/bin/sh
2
3 export LANG=
4 export LC_ALL=
5 export LC_COLLATE=
6 if test "$1" != "--recursive-hack"; then
7         "$0" --recursive-hack "$@"
8         exit $?
9 else
10         shift
11 fi
12
13 ECC="eccp"
14 ECC_CFLAGS="${ADDCFLAGS} -O3 -c -D__builtin_memcpy=memcpy -D__builtin_memset=memset -D__builtin_strlen=strlen -D__builtin_strcpy=strcpy -D__builtin_strcmp=strcmp -DNO_TRAMPOLINES"
15 GCC="gcc"
16 GCC_CFLAGS="-O0 -Itcc"
17 LINKFLAGS="-lm"
18 TIMEOUT_COMPILE=300
19 TIMEOUT_RUN=30
20
21 CFILES="*.c"
22 OUTPUTDIR="stats-`date +%y.%m.%d`"
23
24 mkdir -p build_firm
25 mkdir -p build_gcc
26 mkdir -p $OUTPUTDIR
27
28 XMLRES=$OUTPUTDIR/result.xml
29 cat > $XMLRES << __END__
30 <?xml version="1.0"?>
31 <results>
32     <environment>
33         <ECC_CFLAGS>${ECC_CFLAGS}</ECC_CFLAGS>
34         <GCC_CFLAGS>${GCC_CFLAGS}</GCC_CFLAGS>
35     </environment>
36 __END__
37
38 # so endless apps stop at some point...
39 #ulimit -t2
40
41 basedir=`pwd`
42
43 DIRS=". langshootout ack gcc-testsuite gcc-testsuite/ieee"
44 test -n "$1" && DIRS="$1"
45
46 for dir in $DIRS; do
47         curdir=$basedir/$dir
48     echo "<section name=\"$curdir/\">" >> $XMLRES
49 for file in $curdir/$CFILES; do
50     COMPILE_RES="ok"
51     LINK_RES="omitted"
52     GCC_RES="ok"
53     GCC_RUN_RES="omitted"
54     FIRM_RUN_RES="omitted"
55     DIFF_RES="omitted"
56
57     name="`basename $file .c`"
58     res="$OUTPUTDIR/buildresult_$name.txt"
59     echo "Building $name"
60     echo "Results for $name" > $res
61     echo "*** ECC/FIRM Compile" >> $res
62     CMD="ulimit -t${TIMEOUT_COMPILE} ; ${ECC} ${ECC_CFLAGS} $file"
63     echo "$CMD" >> $res
64     /bin/bash -c "ulimit -t${TIMEOUT_COMPILE} ; ${ECC} ${ECC_CFLAGS} $file" >> $res 2>&1 || COMPILE_RES="failed"
65
66     if [ ${COMPILE_RES} == "ok" ]; then
67         LINK_RES="ok"
68         CMD="mv $curdir/$name.s build_firm/$name.s"
69         echo "$CMD" >> $res
70         $CMD >> $res 2>&1
71         echo "*** Linking" >> $res
72         CMD="${ECC} build_firm/$name.s ${LINKFLAGS} -o build_firm/$name.exe"
73         echo "$CMD" >> $res
74         $CMD >> $res 2>&1 || LINK_RES="failed"
75     fi
76
77     echo "*** GCC Compile" >> $res
78     CMD="${GCC} ${GCC_CFLAGS} $file ${LINKFLAGS} -o build_gcc/$name.exe"
79     echo "$CMD" >> $res
80     $CMD >> $res 2>&1 || GCC_RES="failed"
81
82     if [ ${GCC_RES} = "ok" ]; then
83         GCC_RUN_RES="ok"
84
85         echo "*** Run GCC" >> $res
86         CMD="ulimit -t${TIMEOUT_RUN} ; build_gcc/$name.exe > $OUTPUTDIR/result_gcc_$name.txt 2>&1"
87         echo "$CMD" >> $res
88         /bin/bash -c "ulimit -t${TIMEOUT_RUN} ; build_gcc/$name.exe" > $OUTPUTDIR/result_gcc_$name.txt 2>&1 || GCC_RUN_RES="failed"
89     fi
90
91     if [ ${LINK_RES} = "ok" ]; then
92         FIRM_RUN_RES="ok"
93
94         echo "*** Run Firm" >> $res
95         CMD="ulimit -t${TIMEOUT_RUN} ; build_firm/$name.exe > $OUTPUTDIR/result_gcc_$name.txt 2>&1"
96         echo "$CMD" >> $res
97         /bin/bash -c "ulimit -t${TIMEOUT_RUN} ; build_firm/$name.exe" > $OUTPUTDIR/result_firm_$name.txt 2>&1 || FIRM_RUN_RES="failed"
98     fi
99
100     if [ ${GCC_RUN_RES} = "ok" -a ${FIRM_RUN_RES} = "ok" ]; then
101         DIFF_RES="ok"
102
103         echo "*** Compare Results" >> $res
104         CMD="diff -u $OUTPUTDIR/result_gcc_$name.txt $OUTPUTDIR/result_firm_$name.txt"
105         $CMD > $OUTPUTDIR/result_diff_$name.txt 2>&1 || DIFF_RES="failed"
106     fi
107
108     cat >> $XMLRES << __END__
109     <result name="$name">
110         <compile>$COMPILE_RES</compile>
111         <link>$LINK_RES</link>
112         <gcc_compile>$GCC_RES</gcc_compile>
113         <gcc_run>$GCC_RUN_RES</gcc_run>
114         <firm_run>$FIRM_RUN_RES</firm_run>
115         <diff>$DIFF_RES</diff>
116     </result>
117 __END__
118 done
119     echo "</section>" >> $XMLRES
120 done
121
122 echo "</results>" >> $XMLRES
123
124 xsltproc --output $OUTPUTDIR/index.html makehtml.xslt $XMLRES
125
126 # maybe execute custom actions after result has been generated
127 [ -e after_compile.sh ] && ./after_compile.sh "$OUTPUTDIR"