doc/sourcebuild.texi (Selectors): Document the use of target and xfail used together.
doc/sourcebuild.texi (Selectors): Document the use of target and xfail used together. testsuite/ * lib/target-supports-dg.exp (dg-require-effective-target, dg-skip-if, dg-xfail-if, dg-xfail-run-if, dg-shouldfail): Call dg-process-target-1 instead of dg-process-target. (dg-process-target-1): Rename from dg-process-target. (dg-process-target): New. From-SVN: r191670
This commit is contained in:
parent
28957eabb4
commit
776de6b2ee
4 changed files with 66 additions and 20 deletions
|
@ -1,3 +1,8 @@
|
|||
2012-09-24 Janis Johnson <janisjo@codesourcery.com>
|
||||
|
||||
doc/sourcebuild.texi (Selectors): Document the use of target
|
||||
and xfail used together.
|
||||
|
||||
2012-09-24 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/54632
|
||||
|
|
|
@ -1238,15 +1238,18 @@ on particular targets.
|
|||
|
||||
A selector is:
|
||||
@itemize @bullet
|
||||
@item one or more target triplets, possibly including wildcard characters
|
||||
@item one or more target triplets, possibly including wildcard characters;
|
||||
use @samp{*-*-*} to match any target
|
||||
@item a single effective-target keyword (@pxref{Effective-Target Keywords})
|
||||
@item a logical expression
|
||||
@end itemize
|
||||
|
||||
Depending on the
|
||||
context, the selector specifies whether a test is skipped and reported
|
||||
as unsupported or is expected to fail. Use @samp{*-*-*} to match any
|
||||
target.
|
||||
Depending on the context, the selector specifies whether a test is
|
||||
skipped and reported as unsupported or is expected to fail. A context
|
||||
that allows either @samp{target} or @samp{xfail} also allows
|
||||
@samp{@{ target @var{selector1} xfail @var{selector2} @}}
|
||||
to skip the test for targets that don't match @var{selector1} and the
|
||||
test to fail for targets that match @var{selector2}.
|
||||
|
||||
A selector expression appears within curly braces and uses a single
|
||||
logical operator: one of @samp{!}, @samp{&&}, or @samp{||}. An
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2012-09-24 Janis Johnson <janisjo@codesourcery.com>
|
||||
|
||||
* lib/target-supports-dg.exp (dg-require-effective-target,
|
||||
dg-skip-if, dg-xfail-if, dg-xfail-run-if, dg-shouldfail): Call
|
||||
dg-process-target-1 instead of dg-process-target.
|
||||
(dg-process-target-1): Rename from dg-process-target.
|
||||
(dg-process-target): New.
|
||||
|
||||
2012-09-24 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/54684
|
||||
|
|
|
@ -208,7 +208,7 @@ proc dg-require-effective-target { args } {
|
|||
|
||||
# Evaluate selector if present.
|
||||
if { [llength $args] == 2 } {
|
||||
switch [dg-process-target [lindex $args 1]] {
|
||||
switch [dg-process-target-1 [lindex $args 1]] {
|
||||
"S" { }
|
||||
"N" { return }
|
||||
}
|
||||
|
@ -362,7 +362,7 @@ proc dg-skip-if { args } {
|
|||
}
|
||||
|
||||
set selector [list target [lindex $args 1]]
|
||||
if { [dg-process-target $selector] == "S" } {
|
||||
if { [dg-process-target-1 $selector] == "S" } {
|
||||
if [check-flags $args] {
|
||||
upvar dg-do-what dg-do-what
|
||||
set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
|
||||
|
@ -386,7 +386,7 @@ proc dg-xfail-if { args } {
|
|||
}
|
||||
|
||||
set selector [list target [lindex $args 1]]
|
||||
if { [dg-process-target $selector] == "S" } {
|
||||
if { [dg-process-target-1 $selector] == "S" } {
|
||||
global compiler_conditional_xfail_data
|
||||
|
||||
# The target list might be an effective-target keyword. Replace
|
||||
|
@ -421,7 +421,7 @@ proc dg-xfail-run-if { args } {
|
|||
}
|
||||
|
||||
set selector [list target [lindex $args 1]]
|
||||
if { [dg-process-target $selector] == "S" } {
|
||||
if { [dg-process-target-1 $selector] == "S" } {
|
||||
if [check-flags $args] {
|
||||
upvar dg-do-what dg-do-what
|
||||
set dg-do-what [list [lindex ${dg-do-what} 0] "S" "F"]
|
||||
|
@ -445,7 +445,7 @@ proc dg-shouldfail { args } {
|
|||
set args [lreplace $args 0 0]
|
||||
if { [llength $args] > 1 } {
|
||||
set selector [list target [lindex $args 1]]
|
||||
if { [dg-process-target $selector] == "S" } {
|
||||
if { [dg-process-target-1 $selector] == "S" } {
|
||||
# The target matches, now check the flags.
|
||||
if [check-flags $args] {
|
||||
set shouldfail 1
|
||||
|
@ -460,16 +460,19 @@ proc dg-shouldfail { args } {
|
|||
# support use of an effective-target keyword in place of a list of
|
||||
# target triplets to xfail or skip a test.
|
||||
#
|
||||
# selector is one of:
|
||||
# xfail target-triplet-1 ...
|
||||
# xfail effective-target-keyword
|
||||
# xfail selector-expression
|
||||
# target target-triplet-1 ...
|
||||
# target effective-target-keyword
|
||||
# target selector-expression
|
||||
# The argument to dg-process-target is the keyword "target" or "xfail"
|
||||
# followed by a selector:
|
||||
# target-triplet-1 ...
|
||||
# effective-target-keyword
|
||||
# selector-expression
|
||||
#
|
||||
# For a target list the result is "S" if the target is selected, "N" otherwise.
|
||||
# For an xfail list the result is "F" if the target is affected, "P" otherwise.
|
||||
|
||||
# In contexts that allow either "target" or "xfail" the argument can be
|
||||
# target selector1 xfail selector2
|
||||
# which returns "N" if selector1 is not selected, otherwise the result of
|
||||
# "xfail selector2".
|
||||
#
|
||||
# A selector expression appears within curly braces and uses a single logical
|
||||
# operator: !, &&, or ||. An operand is another selector expression, an
|
||||
|
@ -529,9 +532,11 @@ if { [info procs saved-dg-process-target] == [list] } {
|
|||
return $answer
|
||||
}
|
||||
|
||||
proc dg-process-target { args } {
|
||||
verbose "replacement dg-process-target: `$args'" 2
|
||||
|
||||
# Evaluate "target selector" or "xfail selector".
|
||||
|
||||
proc dg-process-target-1 { args } {
|
||||
verbose "dg-process-target-1: `$args'" 2
|
||||
|
||||
# Extract the 'what' keyword from the argument list.
|
||||
set selector [string trim [lindex $args 0]]
|
||||
if [regexp "^xfail " $selector] {
|
||||
|
@ -567,4 +572,29 @@ if { [info procs saved-dg-process-target] == [list] } {
|
|||
# the list of target triplets.
|
||||
return [saved-dg-process-target $selector]
|
||||
}
|
||||
|
||||
# Intercept calls to the DejaGnu function. In addition to
|
||||
# processing "target selector" or "xfail selector", handle
|
||||
# "target selector1 xfail selector2".
|
||||
|
||||
proc dg-process-target { args } {
|
||||
verbose "replacement dg-process-target: `$args'" 2
|
||||
|
||||
set selector [string trim [lindex $args 0]]
|
||||
|
||||
# If the argument list contains both 'target' and 'xfail',
|
||||
# process 'target' and, if that succeeds, process 'xfail'.
|
||||
if [regexp "^target .* xfail .*" $selector] {
|
||||
set xfail_index [string first "xfail" $selector]
|
||||
set xfail_selector [string range $selector $xfail_index end]
|
||||
set target_selector [string range $selector 0 $xfail_index-1]
|
||||
set target_selector [string trim $target_selector]
|
||||
if { [dg-process-target-1 $target_selector] == "N" } {
|
||||
return "N"
|
||||
}
|
||||
return [dg-process-target-1 $xfail_selector]
|
||||
|
||||
}
|
||||
return [dg-process-target-1 $selector]
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue