| Index: gcc/gcc/testsuite/lib/target-supports-dg.exp
|
| diff --git a/gcc/gcc/testsuite/lib/target-supports-dg.exp b/gcc/gcc/testsuite/lib/target-supports-dg.exp
|
| index ac88a7f255730ecb2e9b231fd4488f23eaf3b491..e742d750c762d5823a6a3237996f7325cc7965b9 100644
|
| --- a/gcc/gcc/testsuite/lib/target-supports-dg.exp
|
| +++ b/gcc/gcc/testsuite/lib/target-supports-dg.exp
|
| @@ -1,4 +1,4 @@
|
| -# Copyright (C) 1997, 1999, 2000, 2003, 2004, 2005, 2007, 2008, 2009
|
| +# Copyright (C) 1997, 1999, 2000, 2003, 2004, 2005, 2007, 2008, 2009, 2010
|
| # Free Software Foundation, Inc.
|
|
|
| # This program is free software; you can redistribute it and/or modify
|
| @@ -145,12 +145,23 @@ proc dg-require-named-sections { args } {
|
| }
|
|
|
| # If the target does not match the required effective target, skip this test.
|
| +# Only apply this if the optional selector matches.
|
|
|
| proc dg-require-effective-target { args } {
|
| set args [lreplace $args 0 0]
|
| - if { [llength $args] != 1 } {
|
| - error "syntax error, need a single effective-target keyword"
|
| + # Verify the number of arguments. The last is optional.
|
| + if { [llength $args] < 1 || [llength $args] > 2 } {
|
| + error "syntax error, need a single effective-target keyword with optional selector"
|
| + }
|
| +
|
| + # Evaluate selector if present.
|
| + if { [llength $args] == 2 } {
|
| + switch [dg-process-target [lindex $args 1]] {
|
| + "S" { }
|
| + "N" { return }
|
| + }
|
| }
|
| +
|
| if { ![is-effective-target [lindex $args 0]] } {
|
| upvar dg-do-what dg-do-what
|
| set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
|
| @@ -235,9 +246,26 @@ proc check-flags { args } {
|
| append compiler_flags "[board_info $dest multilib_flags] "
|
| }
|
|
|
| - # The target list might be an effective-target keyword, so replace
|
| - # the original list with "*-*-*", since we already know it matches.
|
| - set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
|
| + # The next two arguments are optional. If they were not specified,
|
| + # use the defaults.
|
| + if { [llength $args] == 2 } {
|
| + lappend $args [list "*"]
|
| + }
|
| + if { [llength $args] == 3 } {
|
| + lappend $args [list ""]
|
| + }
|
| +
|
| + # If the option strings are the defaults, or the same as the
|
| + # defaults, there is no need to call check_conditional_xfail to
|
| + # compare them to the actual options.
|
| + if { [string compare [lindex $args 2] "*"] == 0
|
| + && [string compare [lindex $args 3] "" ] == 0 } {
|
| + set result 1
|
| + } else {
|
| + # The target list might be an effective-target keyword, so replace
|
| + # the original list with "*-*-*", since we already know it matches.
|
| + set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
|
| + }
|
|
|
| # Any value in this variable was left over from an earlier test.
|
| set compiler_flags ""
|
| @@ -256,14 +284,18 @@ proc check-flags { args } {
|
| # group of tests or flags specified with a previous dg-options command.
|
|
|
| proc dg-skip-if { args } {
|
| + # Verify the number of arguments. The last two are optional.
|
| + set args [lreplace $args 0 0]
|
| + if { [llength $args] < 2 || [llength $args] > 4 } {
|
| + error "dg-skip-if 2: need 2, 3, or 4 arguments"
|
| + }
|
| +
|
| # Don't bother if we're already skipping the test.
|
| upvar dg-do-what dg-do-what
|
| if { [lindex ${dg-do-what} 1] == "N" } {
|
| return
|
| }
|
|
|
| - set args [lreplace $args 0 0]
|
| -
|
| set selector [list target [lindex $args 1]]
|
| if { [dg-process-target $selector] == "S" } {
|
| if [check-flags $args] {
|
| @@ -276,31 +308,53 @@ proc dg-skip-if { args } {
|
| # Like check_conditional_xfail, but callable from a dg test.
|
|
|
| proc dg-xfail-if { args } {
|
| + # Verify the number of arguments. The last three are optional.
|
| + set args [lreplace $args 0 0]
|
| + if { [llength $args] < 2 || [llength $args] > 4 } {
|
| + error "dg-xfail-if: need 2, 3, or 4 arguments"
|
| + }
|
| +
|
| # Don't change anything if we're already skipping the test.
|
| upvar dg-do-what dg-do-what
|
| if { [lindex ${dg-do-what} 1] == "N" } {
|
| return
|
| }
|
|
|
| - set args [lreplace $args 0 0]
|
| set selector [list target [lindex $args 1]]
|
| if { [dg-process-target $selector] == "S" } {
|
| global compiler_conditional_xfail_data
|
| - set compiler_conditional_xfail_data [lreplace $args 1 1 "*-*-*"]
|
| +
|
| + # The target list might be an effective-target keyword. Replace
|
| + # the original list with "*-*-*", since we already know it matches.
|
| + set args [lreplace $args 1 1 "*-*-*"]
|
| +
|
| + # Supply default values for unspecified optional arguments.
|
| + if { [llength $args] == 2 } {
|
| + lappend $args [list "*"]
|
| + }
|
| + if { [llength $args] == 3 } {
|
| + lappend $args [list ""]
|
| + }
|
| +
|
| + set compiler_conditional_xfail_data $args
|
| }
|
| }
|
|
|
| # Like dg-xfail-if but for the execute step.
|
|
|
| proc dg-xfail-run-if { args } {
|
| + # Verify the number of arguments. The last two are optional.
|
| + set args [lreplace $args 0 0]
|
| + if { [llength $args] < 2 || [llength $args] > 4 } {
|
| + error "dg-xfail-run-if: need 2, 3, or 4 arguments"
|
| + }
|
| +
|
| # Don't bother if we're already skipping the test.
|
| upvar dg-do-what dg-do-what
|
| if { [lindex ${dg-do-what} 1] == "N" } {
|
| return
|
| }
|
|
|
| - set args [lreplace $args 0 0]
|
| -
|
| set selector [list target [lindex $args 1]]
|
| if { [dg-process-target $selector] == "S" } {
|
| if [check-flags $args] {
|
|
|