Commit 4c33b2da by Richard Sandiford

testsuite: Add target/xfail argument to check-function-bodies

check-function-bodies allows individual function tests to be
annotated with target/xfail selectors, but sometimes it's
useful to have the same selector for all functions.

2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* doc/sourcebuild.texi (check-function-bodies): Add an
	optional target/xfail selector.

gcc/testsuite/
	* lib/scanasm.exp (check-function-bodies): Add an optional
	target/xfail selector.
parent ccb68179
2020-01-23 Richard Sandiford <richard.sandiford@arm.com> 2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
* doc/sourcebuild.texi (check-function-bodies): Add an
optional target/xfail selector.
2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
PR rtl-optimization/93124 PR rtl-optimization/93124
* auto-inc-dec.c (merge_in_block): Don't add auto inc/decs to * auto-inc-dec.c (merge_in_block): Don't add auto inc/decs to
bare USE and CLOBBER insns. bare USE and CLOBBER insns.
......
...@@ -2723,7 +2723,7 @@ assembly output. ...@@ -2723,7 +2723,7 @@ assembly output.
Passes if @var{symbol} is not defined as a hidden symbol in the test's Passes if @var{symbol} is not defined as a hidden symbol in the test's
assembly output. assembly output.
@item check-function-bodies @var{prefix} @var{terminator} [@var{option}] @item check-function-bodies @var{prefix} @var{terminator} [@var{option} [@{ target/xfail @var{selector} @}]]
Looks through the source file for comments that give the expected assembly Looks through the source file for comments that give the expected assembly
output for selected functions. Each line of expected output starts with the output for selected functions. Each line of expected output starts with the
prefix string @var{prefix} and the expected output for a function as a whole prefix string @var{prefix} and the expected output for a function as a whole
......
2020-01-23 Richard Sandiford <richard.sandiford@arm.com> 2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
* lib/scanasm.exp (check-function-bodies): Add an optional
target/xfail selector.
2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
* gcc.dg/torture/pr93124.c: New test. * gcc.dg/torture/pr93124.c: New test.
2020-01-22 David Malcolm <dmalcolm@redhat.com> 2020-01-22 David Malcolm <dmalcolm@redhat.com>
......
...@@ -604,7 +604,7 @@ proc check_function_body { functions name body_regexp } { ...@@ -604,7 +604,7 @@ proc check_function_body { functions name body_regexp } {
# Check the implementations of functions against expected output. Used as: # Check the implementations of functions against expected output. Used as:
# #
# { dg-do { check-function-bodies PREFIX TERMINATOR[ OPTION] } } # { dg-do { check-function-bodies PREFIX TERMINATOR[ OPTION[ SELECTOR]] } }
# #
# See sourcebuild.texi for details. # See sourcebuild.texi for details.
...@@ -612,11 +612,11 @@ proc check-function-bodies { args } { ...@@ -612,11 +612,11 @@ proc check-function-bodies { args } {
if { [llength $args] < 2 } { if { [llength $args] < 2 } {
error "too few arguments to check-function-bodies" error "too few arguments to check-function-bodies"
} }
if { [llength $args] > 3 } { if { [llength $args] > 4 } {
error "too many arguments to check-function-bodies" error "too many arguments to check-function-bodies"
} }
if { [llength $args] == 3 } { if { [llength $args] >= 3 } {
set required_flag [lindex $args 2] set required_flag [lindex $args 2]
upvar 2 dg-extra-tool-flags extra_tool_flags upvar 2 dg-extra-tool-flags extra_tool_flags
...@@ -631,6 +631,16 @@ proc check-function-bodies { args } { ...@@ -631,6 +631,16 @@ proc check-function-bodies { args } {
} }
} }
set xfail_all 0
if { [llength $args] >= 4 } {
switch [dg-process-target [lindex $args 3]] {
"S" { }
"N" { return }
"F" { set xfail_all 1 }
"P" { }
}
}
set testcase [testname-for-summary] set testcase [testname-for-summary]
# The name might include a list of options; extract the file name. # The name might include a list of options; extract the file name.
set filename [lindex $testcase 0] set filename [lindex $testcase 0]
...@@ -694,7 +704,7 @@ proc check-function-bodies { args } { ...@@ -694,7 +704,7 @@ proc check-function-bodies { args } {
} }
} elseif { [string equal -length $terminator_len $line $terminator] } { } elseif { [string equal -length $terminator_len $line $terminator] } {
if { ![string equal $selector "N"] } { if { ![string equal $selector "N"] } {
if { [string equal $selector "F"] } { if { $xfail_all || [string equal $selector "F"] } {
setup_xfail "*-*-*" setup_xfail "*-*-*"
} }
set testname "$testcase check-function-bodies $function_name" set testname "$testcase check-function-bodies $function_name"
......
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