Commit 5e599ebb by Iain Sandoe Committed by Janis Johnson

re PR testsuite/41609 (Torture tests do not check "trivial.{m,mm}" for each run case.)

2010-03-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>

	PR testsuite/41609
	* lib/objc-torture.exp (objc-set-runtime-options): New.
	* objc/execute/execute.exp: Check runtime options on each pass.
	* objc/execute/exceptions/exceptions.exp: Ditto.
	* objc/compile/compile.exp: Ditto.

From-SVN: r157716
parent 9debda96
2010-03-24 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
PR testsuite/41609
* lib/objc-torture.exp (objc-set-runtime-options): New.
* objc/execute/execute.exp: Check runtime options on each pass.
* objc/execute/exceptions/exceptions.exp: Ditto.
* objc/compile/compile.exp: Ditto.
PR testsuite/42348
* lib/target-supports.exp: Add support for ObjC/ObjC++ tools in
standard tests.
......
......@@ -18,24 +18,61 @@
# This file was written by Rob Savoye. (rob@cygnus.com)
load_lib file-format.exp
load_lib target-supports.exp
if ![info exists OBJC_RUNTIME_OPTIONS] {
set OBJC_RUNTIME_OPTIONS ""
foreach type {-fgnu-runtime -fnext-runtime} {
global srcdir subdir
# Make sure that the runtime list is re-evaluated for each multilib.
proc objc-set-runtime-options { dowhat args } {
global OBJC_RUNTIME_OPTIONS
if ![info exists OBJC_RUNTIME_OPTIONS] {
set rtlist [list "-fgnu-runtime" "-fnext-runtime" ]
} else {
set rtlist [list "-fgnu-runtime" "-fnext-runtime" ]
foreach other $OBJC_RUNTIME_OPTIONS {
# Don't do tests twice...
if { ( $other == "-fnext-runtime" || $other == "-fgnu-runtime" ) } {
continue
}
lappend rtlist $other
}
}
set comp_output [objc_target_compile \
"$srcdir/$subdir/trivial.m" "trivial.exe" executable "additional_flags=$type"]
set OBJC_RUNTIME_OPTIONS ""
# If we get any error, then we failed
if ![string match "" $comp_output] then {
continue;
foreach type $rtlist {
global srcdir subdir target_triplet tmpdir
set options "additional_flags=$type"
if [info exists args] {
lappend options $args
}
verbose "options $options"
set test_obj "trivial.exe"
set comp_output [objc_target_compile \
"$srcdir/$subdir/trivial.m" $test_obj executable $options]
# If we get any error, then we failed.
if ![string match "" $comp_output] then {
remote_file build delete $test_obj
continue;
}
if [info exists dowhat] {
if { $dowhat == "execute" } {
set result [objc_load "$tmpdir/$test_obj" "" ""]
set status [lindex $result 0]
set output [lindex $result 1]
if { $status != "pass" } {
remote_file build delete $test_obj
verbose -log "trivial execute failed with $status $output"
continue;
}
}
}
remote_file build delete $test_obj
lappend OBJC_RUNTIME_OPTIONS $type
}
lappend OBJC_RUNTIME_OPTIONS $type
}
}
verbose -log "Using the following runtimes: $OBJC_RUNTIME_OPTIONS"
verbose -log "Using the following runtimes: $OBJC_RUNTIME_OPTIONS"
}
# The default option list can be overridden by
# TORTURE_OPTIONS="{ { list1 } ... { listN } }"
......@@ -62,7 +99,7 @@ if [info exists TORTURE_OPTIONS] {
}
if [info exists ADDITIONAL_TORTURE_OPTIONS] {
set OBJC_TORTURE_OPTIONS \
set OBJC_TORTURE_OPTIONS \
[concat $OBJC_TORTURE_OPTIONS $ADDITIONAL_TORTURE_OPTIONS]
}
......@@ -150,6 +187,9 @@ proc objc-torture-execute { src args } {
set oldstatus "foo"
foreach option $option_list {
if { $count > 0 } {
if [info exists oldexec] {
remote_file build delete $oldexec
}
set oldexec $execname
}
set execname "${executable}${count}"
......@@ -164,7 +204,7 @@ proc objc-torture-execute { src args } {
# torture_execute_before_{compile,execute} can be set by the .x script
# (if present)
if [info exists torture_eval_before_compile] {
set ignore_me [eval $torture_eval_before_compile]
set ignore_me [eval $torture_eval_before_compile]
}
remote_file build delete $execname
......@@ -188,6 +228,7 @@ proc objc-torture-execute { src args } {
if [target_info exists no_long_long] then {
if [expr [search_for $src "long long"]] then {
unsupported "$testcase execution, $option"
remote_file build delete $execname
continue
}
}
......@@ -197,7 +238,7 @@ proc objc-torture-execute { src args } {
}
if [info exists torture_eval_before_execute] {
set ignore_me [eval $torture_eval_before_execute]
set ignore_me [eval $torture_eval_before_execute]
}
......@@ -218,6 +259,7 @@ proc objc-torture-execute { src args } {
if { ![isnative] && [info exists oldexec] } {
if { [remote_file build cmp $oldexec $execname] == 0 } {
set skip 1
set status $oldstatus
}
}
if { $skip == 0 } {
......@@ -225,16 +267,16 @@ proc objc-torture-execute { src args } {
set status [lindex $result 0]
set output [lindex $result 1]
}
if { $oldstatus == "pass" } {
remote_file build delete $oldexec
}
$status "$testcase execution, $option"
set oldstatus $status
# for each option
}
# tidy up
if [info exists execname] {
remote_file build delete $execname
}
if [info exists status] {
if { $status == "pass" } {
remote_file build delete $execname
}
if [info exists oldexec] {
remote_file build delete $oldexec
}
}
......@@ -293,9 +335,9 @@ proc objc-torture { args } {
# don't pass -funroll[-all]-loops.
global torture_with_loops torture_without_loops
if [expr [search_for $src "for*("]+[search_for $src "while*("]] then {
set option_list $torture_with_loops
set option_list $torture_with_loops
} else {
set option_list $torture_without_loops
set option_list $torture_without_loops
}
# loop through all the options
......@@ -307,7 +349,7 @@ proc objc-torture { args } {
# torture_execute_before_compile is set by the .x script (if present)
if [info exists torture_eval_before_compile] {
set ignore_me [eval $torture_eval_before_compile]
set ignore_me [eval $torture_eval_before_compile]
}
objc-torture-compile $src "$option $options"
......
......@@ -27,7 +27,8 @@ load_lib objc-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $OBJC_TORTURE_OPTIONS $OBJC_RUNTIME_OPTIONS
objc-set-runtime-options "compile"
set-torture-options $OBJC_TORTURE_OPTIONS $OBJC_RUNTIME_OPTIONS
#
# main test loop
......
......@@ -25,13 +25,13 @@ if $tracelevel then {
set additional_flags ""
lappend additional_flags "-fobjc-exceptions"
# load support procs
load_lib objc-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $OBJC_TORTURE_OPTIONS $OBJC_RUNTIME_OPTIONS
objc-set-runtime-options "execute" "additional_flags=-fobjc-exceptions"
set-torture-options $OBJC_TORTURE_OPTIONS $OBJC_RUNTIME_OPTIONS
#
# main test loop
......
......@@ -28,7 +28,8 @@ load_lib objc-torture.exp
load_lib torture-options.exp
torture-init
set-torture-options $OBJC_TORTURE_OPTIONS $OBJC_RUNTIME_OPTIONS
objc-set-runtime-options "execute"
set-torture-options $OBJC_TORTURE_OPTIONS $OBJC_RUNTIME_OPTIONS
#
# main test loop
......
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