[patch, testsuite, spu, fortran] Enable automatic overlay support
Tobias Burnus
burnus@net-b.de
Thu Apr 16 18:32:00 GMT 2009
Ulrich Weigand wrote:
> With those changes, I'm seeing no more FAILs due to memory problems.
> Tested on spu-elf. OK for mainline?
>
Looks ok from the Fortran side.
Tobias
> ChangeLog:
>
> * lib/gcc-dg.exp (gcc-dg-prune): Make linker message check
> less strict so it also works with auto-overlay support.
> * lib/gcc-defs.exp (${tool}_check_unsupported_p): Add check
> for "exceeds local store" linker errors on the SPU.
>
> * lib/gfortran.exp: Include target-supports.exp.
> (gfortran_init): On SPU targets where automatic overlay support
> is available, use it to build all Fortran test cases.
>
> * gfortran.dg/pr20257.f90: Skip on spu-*-* targets.
>
>
> Index: gcc/testsuite/lib/gcc-dg.exp
> ===================================================================
> *** gcc/testsuite/lib/gcc-dg.exp (revision 144779)
> --- gcc/testsuite/lib/gcc-dg.exp (working copy)
> *************** proc gcc-dg-prune { system text } {
> *** 186,192 ****
> # Likewise, if we see ".text exceeds local store range" or
> # similar.
> if {[string match "spu-*" $system] && \
> ! [string match "*exceeds local store range*" $text]} {
> # The format here is important. See dg.exp.
> return "::unsupported::memory full"
> }
> --- 186,192 ----
> # Likewise, if we see ".text exceeds local store range" or
> # similar.
> if {[string match "spu-*" $system] && \
> ! [string match "*exceeds local store*" $text]} {
> # The format here is important. See dg.exp.
> return "::unsupported::memory full"
> }
> Index: gcc/testsuite/lib/gcc-defs.exp
> ===================================================================
> *** gcc/testsuite/lib/gcc-defs.exp (revision 144779)
> --- gcc/testsuite/lib/gcc-defs.exp (working copy)
> *************** proc ${tool}_check_unsupported_p { outpu
> *** 150,155 ****
> --- 150,159 ----
> if [regexp "(^|\n)\[^\n\]*: region \[^\n\]* is full" $output] {
> return "memory full"
> }
> + if {[istarget spu-*-*] && \
> + [string match "*exceeds local store*" $output]} {
> + return "memory full"
> + }
> return ""
> }
>
> Index: gcc/testsuite/lib/gfortran.exp
> ===================================================================
> *** gcc/testsuite/lib/gfortran.exp (revision 144779)
> --- gcc/testsuite/lib/gfortran.exp (working copy)
> *************** load_lib prune.exp
> *** 27,32 ****
> --- 27,33 ----
> load_lib gcc-defs.exp
> load_lib timeout.exp
> load_lib target-libpath.exp
> + load_lib target-supports.exp
>
> #
> # GFORTRAN_UNDER_TEST is the compiler under test.
> *************** proc gfortran_init { args } {
> *** 177,182 ****
> --- 178,190 ----
> lappend ALWAYS_GFORTRANFLAGS "additional_flags=$TOOL_OPTIONS"
> }
>
> + # On the SPU, most of the fortran test cases exceed local store size.
> + # Use automatic overlay support to make them fit.
> + if { [check_effective_target_spu_auto_overlay] } {
> + lappend ALWAYS_GFORTRANFLAGS "ldflags=-Wl,--auto-overlay"
> + lappend ALWAYS_GFORTRANFLAGS "ldflags=-Wl,--reserved-space=131072"
> + }
> +
> verbose -log "ALWAYS_GFORTRANFLAGS set to $ALWAYS_GFORTRANFLAGS"
>
> verbose "gfortran is initialized" 3
> Index: gcc/testsuite/gfortran.dg/pr20257.f90
> ===================================================================
> *** gcc/testsuite/gfortran.dg/pr20257.f90 (revision 144779)
> --- gcc/testsuite/gfortran.dg/pr20257.f90 (working copy)
> ***************
> *** 1,4 ****
> --- 1,5 ----
> ! { dg-do run { target fd_truncate } }
> + ! { dg-skip-if "Too big for local store" { spu-*-* } { "*" } { "" } }
> integer,parameter :: n = 10000
> real(8) array(10000)
>
>
More information about the Fortran
mailing list