]>
Commit | Line | Data |
---|---|---|
202c5083 PB |
1 | #! /bin/bash |
2 | ||
3 | # Compare the assembly language output for all the gcc tests. | |
ebb9f8b0 | 4 | # Copyright (C) 2009, 2011 Free Software Foundation, Inc. |
202c5083 PB |
5 | # Contributed by Paolo Bonzini. |
6 | # | |
7 | # Invoke it as "bash compare-all-tests target1 target2 ... targetN". | |
8 | # Assumptions are: | |
9 | # | |
10 | # 1) that the base and patched compilers reside respectively in | |
11 | # base-$target-build and $target-build, where $target is the commandline | |
12 | # argument to compare-all-tests, and should match the variables in the | |
13 | # script itself so that the correct set of options is tested. Both | |
14 | # compilers should be fully built (including target libraries). | |
15 | # | |
16 | # 2) that the testsuite has been run on the base compiler (since it's | |
17 | # just compilation testing, using RUNTESTFLAGS=--target_board=basic-sim | |
18 | # usually suffices). | |
19 | # | |
20 | # Tests that fail to compile on the base compiler are not compared. | |
21 | ||
22 | alpha_opts='-mlong-double-64/-mieee -mlong-double-64 -mlong-double-128/-mieee -mlong-double-128' | |
23 | arm_opts='-mthumb/-march=armv5t -mthumb/-march=armv6t2 -march=armv5 -mthumb/-march=armv6t2/-mfpu=vfp/-mfloat-abi=softfp -march=armv5/-mfpu=vfp/-mfloat-abi=softfp' | |
24 | cris_opts='-march=v32 -march=v1' | |
25 | h8300_opts='/ -mh -mh/-mn -ms -ms/-mn -msx -msx/-mn -mint32 -mh/-mint32 -mh/-mn/-mint32 -ms/-mint32 -ms/-mn/-mint32 -msx/-mint32 -msx/-mn/-mint32' | |
26 | i386_opts='-m32 -m64 -m32/-msse/-msse2/-mfpmath=sse' | |
27 | m32c_opts='-mcpu=r8c -mcpu=m16c -mcpu=m32c' | |
28 | m68k_opts='-m68000 -m68020 -m68020/-m68881 -m68040/-m68881 -m68060/-m68881 -mcfv4e' | |
29 | mips_opts='-msoft-float/-mgp32/-mips16 -mabi=32/-mfp32/-mgp32/-mips16 -mabi=o64/-mfp64/-mgp64/-mips16 -msoft-float/-mgp32 -mfp32/-mgp32 -march=mips64r2/-mabi=32/-mfp64/-mgp32 -msoft-float/-mgp64 -msingle-float/-mfp32/-mgp64 -mfp64/-mgp64' | |
30 | mn10300_opts='-mam33 -mam33-2' | |
31 | pa_opts='-march=2.0 -march=1.0 -march=1.1' | |
32 | ppc_opts='-m32 -m64' | |
33 | s390_opts='-m31 -m31/-mzarch -m64' | |
202c5083 PB |
34 | sh_opts='-m3 -m3e -m4 -m4a -m4al -m4/-mieee -m1 -m1/-mno-cbranchdi -m2a -m2a/-mieee -m2e -m2e/-mieee' |
35 | sparc_opts='-mcpu=v8/-m32 -mcpu=v9/-m32 -m64' | |
36 | ||
2f2aeda9 | 37 | all_targets='alpha arm avr bfin cris fr30 frv h8300 ia64 iq2000 m32c m32r m68k mcore mips mmix mn10300 pa pdp11 ppc sh sparc v850 vax xstormy16 xtensa' # e500 |
202c5083 PB |
38 | |
39 | test_one_file () | |
40 | { | |
41 | local bdir pdir opts bline pline | |
42 | bdir=base-$1-gcc-build | |
43 | pdir=$1-gcc-build | |
44 | bline=$2 | |
45 | pline=${2//$bdir/$pdir} | |
46 | opts=${3//\// } | |
47 | echo "$pline $opts" | |
48 | $bline $opts 2>/dev/null >/dev/null || return 0 | |
49 | diff -L "$bdir/gcc/cc1 $opts" -L "$pdir/gcc/cc1 $opts" -u \ | |
50 | <( $bline $opts 2>&1 ) <( $pline $opts 2>&1 ) || { echo -n . >&2; return 1; } | |
51 | } | |
52 | ||
53 | test_all_opts () | |
54 | { | |
55 | eval opts=\$${1}_opts | |
56 | if test -z "$opts"; then | |
57 | test_one_file $1 "$2" | |
58 | else | |
59 | for opt in $opts; do | |
60 | test_one_file $1 "$2" $opt | |
61 | done | |
62 | fi | |
63 | } | |
64 | ||
65 | for target in ${*-$all_targets}; do | |
66 | mkdir -p $target-gcc-build/gcc/testsuite/gcc | |
67 | cp -R base-$target-gcc-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1 \ | |
68 | $target-gcc-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1 | |
69 | ||
70 | # Provide targ-include files for newlib | |
71 | # for newlib_path in `echo base-$target-gcc-build/*/newlib`; do | |
72 | # test -d $newlib_path && ln -sf ../../$newlib_path ${newlib_path/base-} | |
73 | # done | |
74 | ||
75 | echo -n Testing $target >&2 | |
76 | sed '/^Executing on host: /!d | |
77 | /xgcc -B/!d | |
78 | / -E /d | |
79 | / -g/d | |
80 | / -print-prog-name=/d | |
81 | s/^Executing on host: // | |
82 | s/ *(timeout.*// | |
83 | s/ -fverbose-asm / / | |
84 | s/ -frtl-abstract-sequences / / | |
85 | s/ -fdump[-a-z0-9]* / /g | |
86 | s/ -da / /g | |
87 | s/ -\{1,2\}save-temps / / | |
88 | s/ -c / -S / | |
89 | / -S /! s/ -o / -S -o / | |
90 | s/ -o [^ ]*/ -frandom-seed=0 -o -/' base-$target-gcc-build/gcc/testsuite/gcc/gcc.log | while read line; do | |
91 | case "$line" in | |
92 | *" -m"*) test_one_file $target "$line" "" ;; | |
93 | *) test_all_opts $target "$line" ;; | |
94 | esac | |
95 | done > compare-$target.log | |
96 | echo >&2 | |
97 | done |