3 # Compare the assembly language output for all the gcc tests.
4 # Copyright (C) 2009, 2011 Free Software Foundation, Inc.
5 # Contributed by Paolo Bonzini.
7 # Invoke it as "bash compare-all-tests target1 target2 ... targetN".
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).
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
20 # Tests that fail to compile on the base compiler are not compared.
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'
33 s390_opts
='-m31 -m31/-mzarch -m64'
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'
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 spu v850 vax xstormy16 xtensa' # e500
41 local bdir pdir opts bline pline
42 bdir
=base-
$1-gcc-build
45 pline
=${2//$bdir/$pdir}
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; }
56 if test -z "$opts"; then
60 test_one_file
$1 "$2" $opt
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
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-}
75 echo -n Testing
$target >&2
76 sed '/^Executing on host: /!d
81 s/^Executing on host: //
84 s/ -frtl-abstract-sequences / /
85 s/ -fdump[-a-z0-9]* / /g
87 s/ -\{1,2\}save-temps / /
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
92 *" -m"*) test_one_file
$target "$line" "" ;;
93 *) test_all_opts
$target "$line" ;;
95 done > compare-
$target.log