Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(248)

Unified Diff: gcc/gcc/testsuite/lib/objc-torture.exp

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/gcc/testsuite/lib/gnat.exp ('k') | gcc/gcc/testsuite/lib/target-libpath.exp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/gcc/testsuite/lib/objc-torture.exp
diff --git a/gcc/gcc/testsuite/lib/objc-torture.exp b/gcc/gcc/testsuite/lib/objc-torture.exp
index 7aba8879ab984c25cd0057daa27a9a589557fa2a..a3d1ef2446e35a2dfaab383e5dd9932489fc80b4 100644
--- a/gcc/gcc/testsuite/lib/objc-torture.exp
+++ b/gcc/gcc/testsuite/lib/objc-torture.exp
@@ -18,24 +18,88 @@
# 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"
+ if [info exists dowhat] {
+ switch $dowhat {
+ "compile" {
+ set compile_type "assembly"
+ set output_file "trivial.s"
+ set comp_output [objc_target_compile \
+ "$srcdir/$subdir/trivial.m" "$output_file" "$compile_type" $options]
+
+ remote_file build delete $output_file
+ # If we get any error, then we failed.
+ if ![string match "" $comp_output] then {
+ continue;
+ }
+ }
+ "execute" {
+ 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;
+ }
+ set result [objc_load "$tmpdir/$test_obj" "" ""]
+ set status [lindex $result 0]
+ set output [lindex $result 1]
+ remote_file build delete $test_obj
+ if { $status != "pass" } {
+ verbose -log "trivial execute failed with $status $output"
+ continue;
+ }
+ }
+ default {
+ perror "$dowhat: not a valid objc-torture action"
+ return ""
+ }
+ }
+ } else {
+ 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.
+ remote_file build delete $test_obj
+ if ![string match "" $comp_output] then {
+ continue;
+ }
+ }
+ 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 +126,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 +214,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 +231,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 +255,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 +265,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 +286,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 +294,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 +362,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 +376,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"
« no previous file with comments | « gcc/gcc/testsuite/lib/gnat.exp ('k') | gcc/gcc/testsuite/lib/target-libpath.exp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698