testsuite: Add target/xfail argument to check-function-bodies
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 20 Jan 2020 19:38:12 +0000 (19:38 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 23 Jan 2020 09:19:16 +0000 (09:19 +0000)
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.

gcc/ChangeLog
gcc/doc/sourcebuild.texi
gcc/testsuite/ChangeLog
gcc/testsuite/lib/scanasm.exp

index d16ebbb7c3a13ec65d2c7e0c1e255e11d8ed55f5..d634b378afc487fcb8237675d609d1b45f95f1eb 100644 (file)
@@ -1,3 +1,8 @@
+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
index af711ad753f6c1b051d95384e4e41c136879f36b..1f412ded2bb77bd12338ae5a928963d4caba190a 100644 (file)
@@ -2723,7 +2723,7 @@ assembly output.
 Passes if @var{symbol} is not defined as a hidden symbol in the test's
 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
 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
index d10c6fc8b81158e136a4dfdd47d3e14f430c6ef9..04f3e802873f27a1add21683ee5f40839fd688bf 100644 (file)
@@ -1,3 +1,8 @@
+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.
index ec91788edef003a32bbd4d5843fc1ccd4ca2bf2a..5ca58d4042027683da12bc2a1d161195cd6439e7 100644 (file)
@@ -604,7 +604,7 @@ proc check_function_body { functions name body_regexp } {
 
 # 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.
 
@@ -612,11 +612,11 @@ proc check-function-bodies { args } {
     if { [llength $args] < 2 } {
        error "too few arguments to check-function-bodies"
     }
-    if { [llength $args] > 3 } {
+    if { [llength $args] > 4 } {
        error "too many arguments to check-function-bodies"
     }
 
-    if { [llength $args] == 3 } {
+    if { [llength $args] >= 3 } {
        set required_flag [lindex $args 2]
 
        upvar 2 dg-extra-tool-flags extra_tool_flags
@@ -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]
     # The name might include a list of options; extract the file name.
     set filename [lindex $testcase 0]
@@ -694,7 +704,7 @@ proc check-function-bodies { args } {
            }
        } elseif { [string equal -length $terminator_len $line $terminator] } {
            if { ![string equal $selector "N"] } {
-               if { [string equal $selector "F"] } {
+               if { $xfail_all || [string equal $selector "F"] } {
                    setup_xfail "*-*-*"
                }
                set testname "$testcase check-function-bodies $function_name"