Commit 91a5b394 by Janis Johnson Committed by Janis Johnson

libgomp.exp: Load torture-options.exp from gcc lib.

libgomp:
	* testsuite/lib/libgomp.exp: Load torture-options.exp from gcc lib.

gcc/doc:
	* doc/sourcebuild.texi: Document support for torture tests.

gcc/testsuite:
	* lib/torture-options.exp: New support for torture options.
	* lib/gfortran-dg.exp (gfortran-dg-runtest): Use new torture
	procs.
	* lib/c-torture.exp: Define C_TORTURE_OPTIONS instead of
	TORTURE_OPTIONS; don't define torture_with_loops and
	torture_without_loops.
	* lib/gcc-dg.exp: Define DG_TORTURE_OPTIONS instead of
	TORTURE_OPTIONS; don't define torture_with_loops and
	torture_without_loops.
	(gcc-dg-runtest): Use new torture procs if no torture options
	defined.
	* lib/fortran-torture.exp: Define FORTRAN_TORTURE_OPTIONS instead of
	TORTURE_OPTIONS.
	(fortran-torture-execute): Use torture_with_loops instead of
	TORTURE_OPTIONS.
	(fortran-torture): Ditto.
	* lib/objc-torture.exp: Define OBJC_TORTURE_OPTIONS instead of
	TORTURE_OPTIONS; don't define torture_with_loops and
	torture_without_loops.
	* gcc.c-torture/execute/execute.exp: Use new torture procs.
	* gcc.c-torture/execute/builtins/builtins.exp: Ditto.
	* gcc.c-torture/execute/ieee/ieee.exp: Ditto.
	* gcc.c-torture/unsorted/unsorted.exp: Ditto.
	* gfortran.fortran-torture/execute/execute.exp: Ditto.
	* gfortran.fortran-torture/compile/compile.exp: Ditto.
	* gcc.target/x86_64/abi/abi-x86_64.exp: Ditto.
	* gcc.target/i386/math-torture/math-torture.exp: Define
	MATH_TORTURE_OPTIONS, use new torture procs.
	* gcc.dg/pch/pch.exp: Use new torture procs.
	* gcc.dg/format/format.exp: Ditto.
	* gcc.misc-tests/i386-prefetch.exp: Ditto.
	* gcc.misc-tests/dectest.exp: Ditto.
	* objc.dg/pch/pch.exp: Ditto.
	* objc/execute/execute.exp: Ditto.
	* objc/execute/exceptions/exceptions.exp: Ditto.
	* objc/compile/compile.exp: Ditto.

From-SVN: r135381
parent 3044d369
2008-05-15 Janis Johnson <janis187@us.ibm.com>
* doc/sourcebuild.texi: Document support for torture tests.
2008-05-15 Uros Bizjak <ubizjak@gmail.com> 2008-05-15 Uros Bizjak <ubizjak@gmail.com>
* config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
......
...@@ -822,6 +822,7 @@ here; FIXME: document the others. ...@@ -822,6 +822,7 @@ here; FIXME: document the others.
* gcov Testing:: Support for testing gcov. * gcov Testing:: Support for testing gcov.
* profopt Testing:: Support for testing profile-directed optimizations. * profopt Testing:: Support for testing profile-directed optimizations.
* compat Testing:: Support for testing binary compatibility. * compat Testing:: Support for testing binary compatibility.
* Torture Tests:: Support for torture testing using multiple options.
@end menu @end menu
@node Test Idioms @node Test Idioms
...@@ -1531,3 +1532,43 @@ This command can be used in a secondary source file to specify that ...@@ -1531,3 +1532,43 @@ This command can be used in a secondary source file to specify that
compilation is expected to fail for particular options on particular compilation is expected to fail for particular options on particular
targets. targets.
@end table @end table
@node Torture Tests
@subsection Support for torture testing using multiple options
Throughout the compiler testsuite there are several directories whose
tests are run multiple times, each with a different set of options.
These are known as torture tests.
@file{gcc/testsuite/lib/torture-options.exp} defines procedures to
set up these lists:
@table @code
@item torture-init
Initialize use of torture lists.
@item set-torture-options
Set lists of torture options to use for tests with and without loops.
Optionally combine a set of torture options with a set of other
options, as is done with Objective-C runtime options.
@item torture-finish
Finalize use of torture lists.
@end table
The @file{.exp} file for a set of tests that use torture options must
include calls to these three procecures if:
@itemize bullet
@item It calls @code{gcc-dg-runtest} and overrides @var{DG_TORTURE_OPTIONS}.
@item It calls @var{$@{tool@}}@code{-torture} or
@var{$@{tool@}}@code{-torture-execute}, where @var{tool} is @code{c},
@code{fortran}, or @code{objc}.
@item It calls @code{dg-pch}.
@end itemize
It is not necessary for a @file{.exp} file that calls @code{gcc-dg-runtest}
to call the torture procedures if the tests should use the list in
@var{DG_TORTURE_OPTIONS} defined in @file{gcc-dg.exp}.
Most uses of torture options can override the default lists by defining
@var{TORTURE_OPTIONS} in a @file{.dejagnurc} file.
2008-05-15 Janis Johnson <janis187@us.ibm.com>
* lib/torture-options.exp: New support for torture options.
* lib/gfortran-dg.exp (gfortran-dg-runtest): Use new torture
procs.
* lib/c-torture.exp: Define C_TORTURE_OPTIONS instead of
TORTURE_OPTIONS; don't define torture_with_loops and
torture_without_loops.
* lib/gcc-dg.exp: Define DG_TORTURE_OPTIONS instead of
TORTURE_OPTIONS; don't define torture_with_loops and
torture_without_loops.
(gcc-dg-runtest): Use new torture procs if no torture options
defined.
* lib/fortran-torture.exp: Define FORTRAN_TORTURE_OPTIONS instead of
TORTURE_OPTIONS.
(fortran-torture-execute): Use torture_with_loops instead of
TORTURE_OPTIONS.
(fortran-torture): Ditto.
* lib/objc-torture.exp: Define OBJC_TORTURE_OPTIONS instead of
TORTURE_OPTIONS; don't define torture_with_loops and
torture_without_loops.
* gcc.c-torture/execute/execute.exp: Use new torture procs.
* gcc.c-torture/execute/builtins/builtins.exp: Ditto.
* gcc.c-torture/execute/ieee/ieee.exp: Ditto.
* gcc.c-torture/unsorted/unsorted.exp: Ditto.
* gfortran.fortran-torture/execute/execute.exp: Ditto.
* gfortran.fortran-torture/compile/compile.exp: Ditto.
* gcc.target/x86_64/abi/abi-x86_64.exp: Ditto.
* gcc.target/i386/math-torture/math-torture.exp: Define
MATH_TORTURE_OPTIONS, use new torture procs.
* gcc.dg/pch/pch.exp: Use new torture procs.
* gcc.dg/format/format.exp: Ditto.
* gcc.misc-tests/i386-prefetch.exp: Ditto.
* gcc.misc-tests/dectest.exp: Ditto.
* objc.dg/pch/pch.exp: Ditto.
* objc/execute/execute.exp: Ditto.
* objc/execute/exceptions/exceptions.exp: Ditto.
* objc/compile/compile.exp: Ditto.
2008-05-15 Richard Guenther <rguenther@suse.de> 2008-05-15 Richard Guenther <rguenther@suse.de>
PR tree-optimization/36245 PR tree-optimization/36245
...@@ -13,8 +13,12 @@ ...@@ -13,8 +13,12 @@
# that needs them. They shouldn't call any external functions in case # that needs them. They shouldn't call any external functions in case
# those functions were overridden too. # those functions were overridden too.
load_lib torture-options.exp
load_lib c-torture.exp load_lib c-torture.exp
torture-init
set-torture-options $C_TORTURE_OPTIONS
set additional_flags "" set additional_flags ""
if [istarget "powerpc-*-darwin*"] { if [istarget "powerpc-*-darwin*"] {
lappend additional_flags "-Wl,-multiply_defined,suppress" lappend additional_flags "-Wl,-multiply_defined,suppress"
...@@ -28,3 +32,5 @@ foreach src [lsort [find $srcdir/$subdir *.c]] { ...@@ -28,3 +32,5 @@ foreach src [lsort [find $srcdir/$subdir *.c]] {
$additional_flags $additional_flags
} }
} }
torture-finish
...@@ -28,8 +28,12 @@ if $tracelevel then { ...@@ -28,8 +28,12 @@ if $tracelevel then {
} }
# load support procs # load support procs
load_lib torture-options.exp
load_lib c-torture.exp load_lib c-torture.exp
torture-init
set-torture-options $C_TORTURE_OPTIONS
# #
# main test loop # main test loop
# #
...@@ -42,3 +46,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] { ...@@ -42,3 +46,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
c-torture-execute $src c-torture-execute $src
} }
torture-finish
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
# Load support procs. # Load support procs.
load_lib gcc-dg.exp load_lib gcc-dg.exp
load_lib torture-options.exp
# These tests come from Torbjorn Granlund's (tege@cygnus.com) # These tests come from Torbjorn Granlund's (tege@cygnus.com)
# C torture test suite, and other contributors. # C torture test suite, and other contributors.
...@@ -32,6 +33,9 @@ if $tracelevel then { ...@@ -32,6 +33,9 @@ if $tracelevel then {
strace $tracelevel strace $tracelevel
} }
torture-init
set-torture-options $C_TORTURE_OPTIONS
set additional_flags "" set additional_flags ""
# We must use -ffloat-store/-mieee to ensure that excess precision on some # We must use -ffloat-store/-mieee to ensure that excess precision on some
...@@ -70,4 +74,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] { ...@@ -70,4 +74,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
} }
# All done. # All done.
torture-finish
gcc_finish gcc_finish
...@@ -30,6 +30,10 @@ if $tracelevel then { ...@@ -30,6 +30,10 @@ if $tracelevel then {
# load support procs # load support procs
load_lib c-torture.exp load_lib c-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $C_TORTURE_OPTIONS
# #
# This loop will run c-torture on any *.c file found in this directory. # This loop will run c-torture on any *.c file found in this directory.
...@@ -52,3 +56,5 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.c]] { ...@@ -52,3 +56,5 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
c-torture $testcase c-torture $testcase
} }
torture-finish
...@@ -17,47 +17,18 @@ ...@@ -17,47 +17,18 @@
# Don't run this directory with any default CFLAGS, but run tests with # Don't run this directory with any default CFLAGS, but run tests with
# and without -DWIDE. # and without -DWIDE.
if [info exists TORTURE_OPTIONS] {
set old_TORTURE_OPTIONS $TORTURE_OPTIONS
} elseif [info exists old_TORTURE_OPTIONS] {
unset old_TORTURE_OPTIONS
}
if [info exists torture_with_loops] {
set old_torture_with_loops $torture_with_loops
} elseif [info exists old_torture_with_loops] {
unset old_torture_with_loops
}
if [info exists torture_without_loops] {
set old_torture_without_loops $torture_without_loops
} elseif [info exists old_torture_without_loops] {
unset old_torture_without_loops
}
set TORTURE_OPTIONS [list { } { -DWIDE } ]
set torture_with_loops [list { } { -DWIDE } ]
set torture_without_loops [list { } { -DWIDE } ]
# Need to copy the format.h header. # Need to copy the format.h header.
if [is_remote host] { if [is_remote host] {
remote_download host $srcdir/$subdir/format.h remote_download host $srcdir/$subdir/format.h
} }
load_lib gcc-dg.exp load_lib gcc-dg.exp
load_lib torture-options.exp
torture-init
set-torture-options [list { } { -DWIDE } ]
dg-init dg-init
gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] ""
if [info exists old_TORTURE_OPTIONS] { torture-finish
set TORTURE_OPTIONS $old_TORTURE_OPTIONS
} else {
unset TORTURE_OPTIONS
}
if [info exists old_torture_with_loops] {
set torture_with_loops $old_torture_with_loops
} else {
unset torture_with_loops
}
if [info exists old_torture_without_loops] {
set torture_without_loops $old_torture_without_loops
} else {
unset torture_without_loops
}
dg-finish dg-finish
...@@ -20,9 +20,12 @@ ...@@ -20,9 +20,12 @@
# Load support procs. # Load support procs.
load_lib gcc-dg.exp load_lib gcc-dg.exp
load_lib dg-pch.exp load_lib dg-pch.exp
load_lib torture-options.exp
# Initialize `dg'. # Initialize `dg'.
dg-init dg-init
torture-init
set-torture-options $DG_TORTURE_OPTIONS
set old_dg_do_what_default "${dg-do-what-default}" set old_dg_do_what_default "${dg-do-what-default}"
...@@ -56,4 +59,5 @@ file delete $testh ...@@ -56,4 +59,5 @@ file delete $testh
set dg-do-what-default "$old_dg_do_what_default" set dg-do-what-default "$old_dg_do_what_default"
# All done. # All done.
torture-finish
dg-finish dg-finish
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
# #
# Contributed by Ben Elliston <bje@au.ibm.com>. # Contributed by Ben Elliston <bje@au.ibm.com>.
set TORTURE_OPTIONS [list {} -O1 -O2 -O3 -Os -msoft-float] set DEC_TORTURE_OPTIONS [list {} -O1 -O2 -O3 -Os -msoft-float]
proc target-specific-flags {} { proc target-specific-flags {} {
set result "-frounding-math " set result "-frounding-math "
...@@ -30,6 +30,7 @@ proc target-specific-flags {} { ...@@ -30,6 +30,7 @@ proc target-specific-flags {} {
# Load support procs (borrow these from c-torture). # Load support procs (borrow these from c-torture).
load_lib c-torture.exp load_lib c-torture.exp
load_lib target-supports.exp load_lib target-supports.exp
load_lib torture-options.exp
# Skip these tests for targets that don't support this extension. # Skip these tests for targets that don't support this extension.
if { ![check_effective_target_dfp] } { if { ![check_effective_target_dfp] } {
...@@ -516,6 +517,11 @@ if [catch {set testdir $env(DECTEST)}] { ...@@ -516,6 +517,11 @@ if [catch {set testdir $env(DECTEST)}] {
return return
} }
torture-init
set-torture-options $DEC_TORTURE_OPTIONS
note "Using tests in $testdir" note "Using tests in $testdir"
dfp-run-tests [lsort [glob -nocomplain $testdir/*.decTest]] dfp-run-tests [lsort [glob -nocomplain $testdir/*.decTest]]
unset testdir unset testdir
torture-finish
...@@ -84,32 +84,24 @@ if $tracelevel then { ...@@ -84,32 +84,24 @@ if $tracelevel then {
# Load support procs. # Load support procs.
load_lib gcc-dg.exp load_lib gcc-dg.exp
load_lib torture-options.exp
# Initialize harness. # Initialize harness.
dg-init dg-init
torture-init
# Save these. They are needed if testsuite loops over multiple ABIs set-torture-options $PREFETCH_NONE
set saved_torture_with_loops $torture_with_loops
set saved_torture_without_loops $torture_without_loops
set torture_with_loops $PREFETCH_NONE
set torture_without_loops $PREFETCH_NONE
gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-none-*.c]] "" gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-none-*.c]] ""
set torture_with_loops $PREFETCH_SSE set-torture-options $PREFETCH_SSE
set torture_without_loops $PREFETCH_SSE
gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-sse-*.c]] "" gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-sse-*.c]] ""
set torture_with_loops $PREFETCH_3DNOW set-torture-options $PREFETCH_3DNOW
set torture_without_loops $PREFETCH_3DNOW
gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-3dnow-*.c]] "" gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-3dnow-*.c]] ""
set torture_with_loops $PREFETCH_ATHLON set-torture-options $PREFETCH_ATHLON
set torture_without_loops $PREFETCH_ATHLON
gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-athlon-*.c]] "" gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-athlon-*.c]] ""
set torture_with_loops $saved_torture_with_loops torture-finish
set torture_without_loops $saved_torture_without_loops
dg-finish dg-finish
...@@ -5,7 +5,7 @@ if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then { ...@@ -5,7 +5,7 @@ if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then {
return return
} }
set TORTURE_OPTIONS [list \ set MATH_TORTURE_OPTIONS [list \
{ -O0 } \ { -O0 } \
{ -O0 -mfpmath=387 } \ { -O0 -mfpmath=387 } \
{ -O0 -msse -mno-sse2 -mfpmath=sse } \ { -O0 -msse -mno-sse2 -mfpmath=sse } \
...@@ -29,8 +29,14 @@ set TORTURE_OPTIONS [list \ ...@@ -29,8 +29,14 @@ set TORTURE_OPTIONS [list \
{ -O2 -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \ { -O2 -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \
{ -O2 -msse -msse2 -mfpmath=sse,387 -ffast-math } \ { -O2 -msse -msse2 -mfpmath=sse,387 -ffast-math } \
] ]
load_lib gcc-dg.exp load_lib gcc-dg.exp
load_lib torture-options.exp
torture-init
set-torture-options $MATH_TORTURE_OPTIONS
dg-init dg-init
gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] "" gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] ""
torture-finish
dg-finish dg-finish
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
load_lib c-torture.exp load_lib c-torture.exp
load_lib target-supports.exp load_lib target-supports.exp
load_lib torture-options.exp
if { (![istarget x86_64-*-*] && ![istarget i?86-*-*]) if { (![istarget x86_64-*-*] && ![istarget i?86-*-*])
|| ![is-effective-target lp64] } then { || ![is-effective-target lp64] } then {
...@@ -26,6 +27,8 @@ if { (![istarget x86_64-*-*] && ![istarget i?86-*-*]) ...@@ -26,6 +27,8 @@ if { (![istarget x86_64-*-*] && ![istarget i?86-*-*])
} }
torture-init
set-torture-options $C_TORTURE_OPTIONS
set additional_flags "-W -Wall" set additional_flags "-W -Wall"
foreach src [lsort [find $srcdir/$subdir test_*.c]] { foreach src [lsort [find $srcdir/$subdir test_*.c]] {
...@@ -41,3 +44,5 @@ foreach src [lsort [find $srcdir/$subdir test_*.c]] { ...@@ -41,3 +44,5 @@ foreach src [lsort [find $srcdir/$subdir test_*.c]] {
} }
} }
} }
torture-finish
...@@ -23,6 +23,10 @@ if $tracelevel then { ...@@ -23,6 +23,10 @@ if $tracelevel then {
# load support procs # load support procs
load_lib fortran-torture.exp load_lib fortran-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $FORTRAN_TORTURE_OPTIONS
foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.f]] { foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.f]] {
# If we're only testing specific files and this isn't one of them, skip it. # If we're only testing specific files and this isn't one of them, skip it.
...@@ -94,3 +98,5 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.F08]] { ...@@ -94,3 +98,5 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.F08]] {
} }
fortran-torture $testcase fortran-torture $testcase
} }
torture-finish
...@@ -27,6 +27,10 @@ if $tracelevel then { ...@@ -27,6 +27,10 @@ if $tracelevel then {
# load support procs # load support procs
load_lib fortran-torture.exp load_lib fortran-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $FORTRAN_TORTURE_OPTIONS
foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.f]] { foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.f]] {
# If we're only testing specific files and this isn't one of them, skip it. # If we're only testing specific files and this isn't one of them, skip it.
...@@ -98,3 +102,5 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.F08]] { ...@@ -98,3 +102,5 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.F08]] {
} }
fortran-torture-execute $testcase fortran-torture-execute $testcase
} }
torture-finish
...@@ -22,7 +22,9 @@ load_lib target-libpath.exp ...@@ -22,7 +22,9 @@ load_lib target-libpath.exp
# The default option list can be overridden by # The default option list can be overridden by
# TORTURE_OPTIONS="{ { list1 } ... { listN } }" # TORTURE_OPTIONS="{ { list1 } ... { listN } }"
if ![info exists TORTURE_OPTIONS] { if [info exists TORTURE_OPTIONS] {
set C_TORTURE_OPTIONS $TORTURE_OPTIONS
} else {
# It is theoretically beneficial to group all of the O2/O3 options together, # It is theoretically beneficial to group all of the O2/O3 options together,
# as in many cases the compiler will generate identical executables for # as in many cases the compiler will generate identical executables for
# all of them--and the c-torture testsuite will skip testing identical # all of them--and the c-torture testsuite will skip testing identical
...@@ -30,7 +32,7 @@ if ![info exists TORTURE_OPTIONS] { ...@@ -30,7 +32,7 @@ if ![info exists TORTURE_OPTIONS] {
# Also note that -finline-functions is explicitly included in one of the # Also note that -finline-functions is explicitly included in one of the
# items below, even though -O3 is also specified, because some ports may # items below, even though -O3 is also specified, because some ports may
# choose to disable inlining functions by default, even when optimizing. # choose to disable inlining functions by default, even when optimizing.
set TORTURE_OPTIONS [list \ set C_TORTURE_OPTIONS [list \
{ -O0 } \ { -O0 } \
{ -O1 } \ { -O1 } \
{ -O2 } \ { -O2 } \
...@@ -55,17 +57,6 @@ if { $orig_environment_saved == 0 } { ...@@ -55,17 +57,6 @@ if { $orig_environment_saved == 0 } {
set_ld_library_path_env_vars set_ld_library_path_env_vars
} }
# Split TORTURE_OPTIONS into two choices: one for testcases with loops and
# one for testcases without loops.
set torture_with_loops $TORTURE_OPTIONS
set torture_without_loops ""
foreach option $TORTURE_OPTIONS {
if ![string match "*loop*" $option] {
lappend torture_without_loops $option
}
}
# #
# c-torture-compile -- runs the Tege C-torture test # c-torture-compile -- runs the Tege C-torture test
# #
......
...@@ -25,7 +25,9 @@ load_lib target-supports.exp ...@@ -25,7 +25,9 @@ load_lib target-supports.exp
# The default option list can be overridden by # The default option list can be overridden by
# TORTURE_OPTIONS="{ { list1 } ... { listN } }" # TORTURE_OPTIONS="{ { list1 } ... { listN } }"
if ![info exists TORTURE_OPTIONS] { if [info exists TORTURE_OPTIONS] {
set FORTRAN_TORTURE_OPTIONS $TORTURE_OPTIONS
} else {
# determine if host supports vectorization, and the necessary set # determine if host supports vectorization, and the necessary set
# of options, based on code from testsuite/vect/vect.exp # of options, based on code from testsuite/vect/vect.exp
...@@ -59,7 +61,7 @@ if ![info exists TORTURE_OPTIONS] { ...@@ -59,7 +61,7 @@ if ![info exists TORTURE_OPTIONS] {
set test_tree_vectorize 0 set test_tree_vectorize 0
} }
set TORTURE_OPTIONS [list \ set FORTRAN_TORTURE_OPTIONS [list \
{ -O0 } { -O1 } { -O2 } \ { -O0 } { -O1 } { -O2 } \
{ -O2 -fomit-frame-pointer -finline-functions } \ { -O2 -fomit-frame-pointer -finline-functions } \
{ -O2 -fomit-frame-pointer -finline-functions -funroll-loops } \ { -O2 -fomit-frame-pointer -finline-functions -funroll-loops } \
...@@ -68,7 +70,7 @@ if ![info exists TORTURE_OPTIONS] { ...@@ -68,7 +70,7 @@ if ![info exists TORTURE_OPTIONS] {
{ -Os }] { -Os }]
if { $test_tree_vectorize } { if { $test_tree_vectorize } {
lappend TORTURE_OPTIONS $vectorizer_options lappend FORTRAN_TORTURE_OPTIONS $vectorizer_options
} }
} }
...@@ -174,7 +176,7 @@ proc fortran-torture-execute { src } { ...@@ -174,7 +176,7 @@ proc fortran-torture-execute { src } {
global srcdir tmpdir global srcdir tmpdir
global tool global tool
global compiler_conditional_xfail_data global compiler_conditional_xfail_data
global TORTURE_OPTIONS global torture_with_loops
# Check for alternate driver. # Check for alternate driver.
set additional_flags "" set additional_flags ""
...@@ -188,7 +190,7 @@ proc fortran-torture-execute { src } { ...@@ -188,7 +190,7 @@ proc fortran-torture-execute { src } {
} }
# Setup the options for the testcase run. # Setup the options for the testcase run.
set option_list $TORTURE_OPTIONS set option_list $torture_with_loops
set executable $tmpdir/[file tail [file rootname $src].x] set executable $tmpdir/[file tail [file rootname $src].x]
regsub "(?q)$srcdir/" $src "" testcase regsub "(?q)$srcdir/" $src "" testcase
...@@ -348,7 +350,7 @@ proc search_for_re { file pattern } { ...@@ -348,7 +350,7 @@ proc search_for_re { file pattern } {
proc fortran-torture { args } { proc fortran-torture { args } {
global srcdir subdir global srcdir subdir
global compiler_conditional_xfail_data global compiler_conditional_xfail_data
global TORTURE_OPTIONS global torture_with_loops
set src [lindex $args 0] set src [lindex $args 0]
if { [llength $args] > 1 } { if { [llength $args] > 1 } {
...@@ -373,7 +375,7 @@ proc fortran-torture { args } { ...@@ -373,7 +375,7 @@ proc fortran-torture { args } {
} }
# loop through all the options # loop through all the options
set option_list $TORTURE_OPTIONS set option_list $torture_with_loops
foreach option $option_list { foreach option $option_list {
# torture_compile_xfail is set by the .x script (if present) # torture_compile_xfail is set by the .x script (if present)
......
...@@ -26,12 +26,15 @@ load_lib scanipa.exp ...@@ -26,12 +26,15 @@ load_lib scanipa.exp
load_lib prune.exp load_lib prune.exp
load_lib libgloss.exp load_lib libgloss.exp
load_lib target-libpath.exp load_lib target-libpath.exp
load_lib torture-options.exp
# We set LC_ALL and LANG to C so that we get the same error messages as expected. # We set LC_ALL and LANG to C so that we get the same error messages as expected.
setenv LC_ALL C setenv LC_ALL C
setenv LANG C setenv LANG C
if ![info exists TORTURE_OPTIONS] { if [info exists TORTURE_OPTIONS] {
set DG_TORTURE_OPTIONS $TORTURE_OPTIONS
} else {
# It is theoretically beneficial to group all of the O2/O3 options together, # It is theoretically beneficial to group all of the O2/O3 options together,
# as in many cases the compiler will generate identical executables for # as in many cases the compiler will generate identical executables for
# all of them--and the c-torture testsuite will skip testing identical # all of them--and the c-torture testsuite will skip testing identical
...@@ -39,7 +42,7 @@ if ![info exists TORTURE_OPTIONS] { ...@@ -39,7 +42,7 @@ if ![info exists TORTURE_OPTIONS] {
# Also note that -finline-functions is explicitly included in one of the # Also note that -finline-functions is explicitly included in one of the
# items below, even though -O3 is also specified, because some ports may # items below, even though -O3 is also specified, because some ports may
# choose to disable inlining functions by default, even when optimizing. # choose to disable inlining functions by default, even when optimizing.
set TORTURE_OPTIONS [list \ set DG_TORTURE_OPTIONS [list \
{ -O0 } \ { -O0 } \
{ -O1 } \ { -O1 } \
{ -O2 } \ { -O2 } \
...@@ -64,17 +67,6 @@ if { $orig_environment_saved == 0 } { ...@@ -64,17 +67,6 @@ if { $orig_environment_saved == 0 } {
set_ld_library_path_env_vars set_ld_library_path_env_vars
} }
# Split TORTURE_OPTIONS into two choices: one for testcases with loops and
# one for testcases without loops.
set torture_with_loops $TORTURE_OPTIONS
set torture_without_loops ""
foreach option $TORTURE_OPTIONS {
if ![string match "*loop*" $option] {
lappend torture_without_loops $option
}
}
# Define gcc callbacks for dg.exp. # Define gcc callbacks for dg.exp.
proc gcc-dg-test-1 { target_compile prog do_what extra_tool_flags } { proc gcc-dg-test-1 { target_compile prog do_what extra_tool_flags } {
...@@ -239,7 +231,17 @@ proc search_for { file pattern } { ...@@ -239,7 +231,17 @@ proc search_for { file pattern } {
proc gcc-dg-runtest { testcases default-extra-flags } { proc gcc-dg-runtest { testcases default-extra-flags } {
global runtests global runtests
# Some callers set torture options themselves; don't override those.
set existing_torture_options [torture-options-exist]
if { $existing_torture_options == 0 } {
global DG_TORTURE_OPTIONS
torture-init
set-torture-options $DG_TORTURE_OPTIONS
}
dump-torture-options
foreach test $testcases { foreach test $testcases {
global torture_with_loops torture_without_loops
# If we're only testing specific files and this isn't one of # If we're only testing specific files and this isn't one of
# them, skip it. # them, skip it.
if ![runtest_file_p $runtests $test] { if ![runtest_file_p $runtests $test] {
...@@ -248,7 +250,6 @@ proc gcc-dg-runtest { testcases default-extra-flags } { ...@@ -248,7 +250,6 @@ proc gcc-dg-runtest { testcases default-extra-flags } {
# Look for a loop within the source code - if we don't find one, # Look for a loop within the source code - if we don't find one,
# don't pass -funroll[-all]-loops. # don't pass -funroll[-all]-loops.
global torture_with_loops torture_without_loops
if [expr [search_for $test "for*("]+[search_for $test "while*("]] { if [expr [search_for $test "for*("]+[search_for $test "while*("]] {
set option_list $torture_with_loops set option_list $torture_with_loops
} else { } else {
...@@ -262,6 +263,10 @@ proc gcc-dg-runtest { testcases default-extra-flags } { ...@@ -262,6 +263,10 @@ proc gcc-dg-runtest { testcases default-extra-flags } {
dg-test $test $flags ${default-extra-flags} dg-test $test $flags ${default-extra-flags}
} }
} }
if { $existing_torture_options == 0 } {
torture-finish
}
} }
proc gcc-dg-debug-runtest { target_compile trivial opt_opts testcases } { proc gcc-dg-debug-runtest { target_compile trivial opt_opts testcases } {
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
# <http://www.gnu.org/licenses/>. # <http://www.gnu.org/licenses/>.
load_lib gcc-dg.exp load_lib gcc-dg.exp
load_lib torture-options.exp
# Define gfortran callbacks for dg.exp. # Define gfortran callbacks for dg.exp.
...@@ -82,7 +83,10 @@ proc gfortran-dg-prune { system text } { ...@@ -82,7 +83,10 @@ proc gfortran-dg-prune { system text } {
# as c-torture does. # as c-torture does.
proc gfortran-dg-runtest { testcases default-extra-flags } { proc gfortran-dg-runtest { testcases default-extra-flags } {
global runtests global runtests
global TORTURE_OPTIONS global DG_TORTURE_OPTIONS torture_with_loops
torture-init
set-torture-options $DG_TORTURE_OPTIONS
foreach test $testcases { foreach test $testcases {
# If we're only testing specific files and this isn't one of # If we're only testing specific files and this isn't one of
...@@ -94,7 +98,7 @@ proc gfortran-dg-runtest { testcases default-extra-flags } { ...@@ -94,7 +98,7 @@ proc gfortran-dg-runtest { testcases default-extra-flags } {
# look if this is dg-do-run test, in which case # look if this is dg-do-run test, in which case
# we cycle through the option list, otherwise we don't # we cycle through the option list, otherwise we don't
if [expr [search_for $test "dg-do run"]] { if [expr [search_for $test "dg-do run"]] {
set option_list $TORTURE_OPTIONS set option_list $torture_with_loops
} else { } else {
set option_list [list { -O } ] set option_list [list { -O } ]
} }
...@@ -106,6 +110,8 @@ proc gfortran-dg-runtest { testcases default-extra-flags } { ...@@ -106,6 +110,8 @@ proc gfortran-dg-runtest { testcases default-extra-flags } {
dg-test $test $flags ${default-extra-flags} dg-test $test $flags ${default-extra-flags}
} }
} }
torture-finish
} }
proc gfortran-dg-debug-runtest { target_compile trivial opt_opts testcases } { proc gfortran-dg-debug-runtest { target_compile trivial opt_opts testcases } {
......
...@@ -18,9 +18,6 @@ ...@@ -18,9 +18,6 @@
load_lib file-format.exp load_lib file-format.exp
# The default option list can be overridden by
# TORTURE_OPTIONS="{ { list1 } ... { listN } }"
if ![info exists OBJC_RUNTIME_OPTIONS] { if ![info exists OBJC_RUNTIME_OPTIONS] {
set OBJC_RUNTIME_OPTIONS "" set OBJC_RUNTIME_OPTIONS ""
foreach type {-fgnu-runtime -fnext-runtime} { foreach type {-fgnu-runtime -fnext-runtime} {
...@@ -39,7 +36,12 @@ if ![info exists OBJC_RUNTIME_OPTIONS] { ...@@ -39,7 +36,12 @@ if ![info exists OBJC_RUNTIME_OPTIONS] {
verbose -log "Using the following runtimes: $OBJC_RUNTIME_OPTIONS" verbose -log "Using the following runtimes: $OBJC_RUNTIME_OPTIONS"
if ![info exists TORTURE_OPTIONS] { # The default option list can be overridden by
# TORTURE_OPTIONS="{ { list1 } ... { listN } }"
if [info exists TORTURE_OPTIONS] {
set OBJC_TORTURE_OPTIONS $TORTURE_OPTIONS
} else {
# It is theoretically beneficial to group all of the O2/O3 options together, # It is theoretically beneficial to group all of the O2/O3 options together,
# as in many cases the compiler will generate identical executables for # as in many cases the compiler will generate identical executables for
# all of them--and the objc-torture testsuite will skip testing identical # all of them--and the objc-torture testsuite will skip testing identical
...@@ -47,7 +49,7 @@ if ![info exists TORTURE_OPTIONS] { ...@@ -47,7 +49,7 @@ if ![info exists TORTURE_OPTIONS] {
# Also note that -finline-functions is explicitly included in one of the # Also note that -finline-functions is explicitly included in one of the
# items below, even though -O3 is also specified, because some ports may # items below, even though -O3 is also specified, because some ports may
# choose to disable inlining functions by default, even when optimizing. # choose to disable inlining functions by default, even when optimizing.
set TORTURE_OPTIONS [list \ set OBJC_TORTURE_OPTIONS [list \
" -O0 " \ " -O0 " \
" -O1 " \ " -O1 " \
" -O2 " \ " -O2 " \
...@@ -58,23 +60,6 @@ if ![info exists TORTURE_OPTIONS] { ...@@ -58,23 +60,6 @@ if ![info exists TORTURE_OPTIONS] {
" -Os " ] " -Os " ]
} }
# Split TORTURE_OPTIONS into two choices: one for testcases with loops and
# one for testcases without loops. Add in the objc runtime options also.
set torture_with_loops ""
set torture_without_loops ""
foreach objc_option $OBJC_RUNTIME_OPTIONS {
foreach option $TORTURE_OPTIONS {
if ![string match "*loop*" $option] {
lappend torture_without_loops "$option $objc_option"
}
lappend torture_with_loops "$option $objc_option"
}
}
# #
# objc-torture-compile -- runs the Tege OBJC-torture test # objc-torture-compile -- runs the Tege OBJC-torture test
# #
......
# Copyright (C) 2008 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
# Prepare to use a new set of torture options.
#
# Letting options leak from one set of tests to another can be confusing.
# Make sure variables are not set at the time we're called, because that
# would mean they were set without being cleared.
proc torture-init { args } {
global torture_without_loops global_with_loops
if [info exists torture_without_loops] {
error "torture-init: torture_without_loops is not empty as expected"
}
if [info exists torture_with_loops] {
error "torture-init: torture_with_loops is not empty as expected"
}
}
# Return 1 if torture options have already been set, 0 otherwise.
proc torture-options-exist { args } {
global torture_with_loops
return [info exists torture_with_loops]
}
# Return 1 if compiler option ARG only affects loops, 0 otherwise.
proc contains-loop-option-p { arg } {
switch -glob -- $arg {
"*loop*" { return 1 }
default { return 0 }
}
}
# Set torture options variables for tests with and without loops.
#
# Argument 0 is the list to use as torture options
# Argument 1 is the list to combine with the torture options.
proc set-torture-options { args } {
global torture_with_loops torture_without_loops
set torture_list [lindex $args 0]
if { [llength $args] != 1 } {
set other_list [lindex $args 1]
} else {
set other_list [list {}]
}
set torture_with_loops ""
set torture_without_loops ""
foreach torture_opts $torture_list {
foreach other_opts $other_list {
# Remove trailing space[s] to match previous output.
set torture_opts [string trimright $torture_opts]
if ![contains-loop-option-p $torture_opts] {
lappend torture_without_loops "$torture_opts $other_opts"
}
lappend torture_with_loops "$torture_opts $other_opts"
}
}
}
# Finish up after using a set of torture options.
#
# Letting options leak from one set of tests to another can be confusing.
# Make sure variables are set at the time we're called, and then unset
# them to prevent interference with other sets of tests.
proc torture-finish { args } {
global torture_without_loops torture_with_loops
if [info exists torture_without_loops] {
unset torture_without_loops
} else {
error "torture-finish: torture_without_loops is not defined"
}
if [info exists torture_with_loops] {
unset torture_with_loops
} else {
error "torture-finish: torture_with_loops is not defined"
}
}
# Useful for debugging .exp files.
proc dump-torture-options { args } {
global torture_without_loops torture_with_loops
if [info exists torture_without_loops] {
verbose "torture_without_loops = \"${torture_without_loops}\"" 1
} else {
verbose "torture_without_loops is not defined" 1
}
if [info exists torture_with_loops] {
verbose "torture_with_loops = \"${torture_with_loops}\"" 1
} else {
verbose "torture_with_loops is not defined" 1
}
}
...@@ -20,10 +20,14 @@ ...@@ -20,10 +20,14 @@
# Load support procs. # Load support procs.
load_lib objc-dg.exp load_lib objc-dg.exp
load_lib dg-pch.exp load_lib dg-pch.exp
load_lib torture-options.exp
# Initialize `dg'. # Initialize `dg'.
dg-init dg-init
torture-init
set-torture-options $DG_TORTURE_OPTIONS
set old_dg_do_what_default "${dg-do-what-default}" set old_dg_do_what_default "${dg-do-what-default}"
# Main loop. # Main loop.
...@@ -40,4 +44,5 @@ foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.m]] { ...@@ -40,4 +44,5 @@ foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.m]] {
set dg-do-what-default "$old_dg_do_what_default" set dg-do-what-default "$old_dg_do_what_default"
# All done. # All done.
torture-finish
dg-finish dg-finish
...@@ -23,6 +23,10 @@ if $tracelevel then { ...@@ -23,6 +23,10 @@ if $tracelevel then {
# load support procs # load support procs
load_lib objc-torture.exp load_lib objc-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $OBJC_TORTURE_OPTIONS $OBJC_RUNTIME_OPTIONS
# #
# main test loop # main test loop
...@@ -36,3 +40,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.m]] { ...@@ -36,3 +40,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.m]] {
objc-torture $src objc-torture $src
} }
torture-finish
...@@ -27,6 +27,10 @@ lappend additional_flags "-fobjc-exceptions" ...@@ -27,6 +27,10 @@ lappend additional_flags "-fobjc-exceptions"
# load support procs # load support procs
load_lib objc-torture.exp load_lib objc-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $OBJC_TORTURE_OPTIONS $OBJC_RUNTIME_OPTIONS
# #
# main test loop # main test loop
...@@ -40,3 +44,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.m]] { ...@@ -40,3 +44,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.m]] {
objc-torture-execute $src $additional_flags objc-torture-execute $src $additional_flags
} }
torture-finish
...@@ -24,6 +24,10 @@ if $tracelevel then { ...@@ -24,6 +24,10 @@ if $tracelevel then {
# load support procs # load support procs
load_lib objc-torture.exp load_lib objc-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $OBJC_TORTURE_OPTIONS $OBJC_RUNTIME_OPTIONS
# #
# main test loop # main test loop
...@@ -37,3 +41,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.m]] { ...@@ -37,3 +41,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.m]] {
objc-torture-execute $src objc-torture-execute $src
} }
torture-finish
2008-05-15 Janis Johnson <janis187@us.ibm.com>
* testsuite/lib/libgomp.exp: Load torture-options.exp from gcc lib.
2008-05-07 Jakub Jelinek <jakub@redhat.com> 2008-05-07 Jakub Jelinek <jakub@redhat.com>
PR middle-end/36106 PR middle-end/36106
......
...@@ -21,6 +21,7 @@ load_gcc_lib prune.exp ...@@ -21,6 +21,7 @@ load_gcc_lib prune.exp
load_gcc_lib target-libpath.exp load_gcc_lib target-libpath.exp
load_gcc_lib wrapper.exp load_gcc_lib wrapper.exp
load_gcc_lib gcc-defs.exp load_gcc_lib gcc-defs.exp
load_gcc_lib torture-options.exp
load_gcc_lib gcc-dg.exp load_gcc_lib gcc-dg.exp
load_gcc_lib gfortran-dg.exp load_gcc_lib gfortran-dg.exp
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment