diff mbox series

testsuite: Make check-function-bodies work with LTO

Message ID mpt5xqaboq0.fsf@arm.com
State New
Headers show
Series testsuite: Make check-function-bodies work with LTO | expand

Commit Message

Richard Sandiford Oct. 2, 2024, 1:48 p.m. UTC
This patch tries to make check-function-bodies automatically
choose between reading the regular assembly file and reading the
LTO assembly file.  There should only ever be one right answer,
since check-function-bodies doesn't make sense on slim LTO output.

Maybe this will turn out to be impossible to get right, but I'd like
to try at least.

Tested on aarch64-linux-gnu.  OK to install?

Richard


gcc/testsuite/
	* lib/scanasm.exp (check-function-bodies): Look in ltrans0.ltrans.s
	if the test appears to be using LTO.
---
 gcc/testsuite/lib/scanasm.exp | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

Comments

Richard Biener Oct. 4, 2024, 6:26 a.m. UTC | #1
On Wed, Oct 2, 2024 at 3:48 PM Richard Sandiford
<richard.sandiford@arm.com> wrote:
>
> This patch tries to make check-function-bodies automatically
> choose between reading the regular assembly file and reading the
> LTO assembly file.  There should only ever be one right answer,
> since check-function-bodies doesn't make sense on slim LTO output.
>
> Maybe this will turn out to be impossible to get right, but I'd like
> to try at least.
>
> Tested on aarch64-linux-gnu.  OK to install?

OK.

> Richard
>
>
> gcc/testsuite/
>         * lib/scanasm.exp (check-function-bodies): Look in ltrans0.ltrans.s
>         if the test appears to be using LTO.
> ---
>  gcc/testsuite/lib/scanasm.exp | 24 ++++++++++++++++--------
>  1 file changed, 16 insertions(+), 8 deletions(-)
>
> diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp
> index 737eefc655e..26504deb0e6 100644
> --- a/gcc/testsuite/lib/scanasm.exp
> +++ b/gcc/testsuite/lib/scanasm.exp
> @@ -997,16 +997,17 @@ proc check-function-bodies { args } {
>         error "too many arguments to check-function-bodies"
>      }
>
> +    upvar 2 dg-extra-tool-flags extra_tool_flags
> +    set flags $extra_tool_flags
> +
> +    global torture_current_flags
> +    if { [info exists torture_current_flags] } {
> +       append flags " " $torture_current_flags
> +    }
> +
>      if { [llength $args] >= 3 } {
>         set required_flags [lindex $args 2]
>
> -       upvar 2 dg-extra-tool-flags extra_tool_flags
> -       set flags $extra_tool_flags
> -
> -       global torture_current_flags
> -       if { [info exists torture_current_flags] } {
> -           append flags " " $torture_current_flags
> -       }
>         foreach required_flag $required_flags {
>             switch -- $required_flag {
>                 target -
> @@ -1043,7 +1044,14 @@ proc check-function-bodies { args } {
>
>      global srcdir
>      set input_filename "$srcdir/$filename"
> -    set output_filename "[file rootname [file tail $filename]].s"
> +    set output_filename "[file rootname [file tail $filename]]"
> +    if { [string match "* -flto *" " ${flags} "]
> +        && ![string match "* -fno-use-linker-plugin *" " ${flags} "]
> +        && ![string match "* -ffat-lto-objects *" " ${flags} "] } {
> +       append output_filename ".ltrans0.ltrans.s"
> +    } else {
> +       append output_filename ".s"
> +    }
>
>      set prefix [lindex $args 0]
>      set prefix_len [string length $prefix]
> --
> 2.25.1
>
diff mbox series

Patch

diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp
index 737eefc655e..26504deb0e6 100644
--- a/gcc/testsuite/lib/scanasm.exp
+++ b/gcc/testsuite/lib/scanasm.exp
@@ -997,16 +997,17 @@  proc check-function-bodies { args } {
 	error "too many arguments to check-function-bodies"
     }
 
+    upvar 2 dg-extra-tool-flags extra_tool_flags
+    set flags $extra_tool_flags
+
+    global torture_current_flags
+    if { [info exists torture_current_flags] } {
+	append flags " " $torture_current_flags
+    }
+
     if { [llength $args] >= 3 } {
 	set required_flags [lindex $args 2]
 
-	upvar 2 dg-extra-tool-flags extra_tool_flags
-	set flags $extra_tool_flags
-
-	global torture_current_flags
-	if { [info exists torture_current_flags] } {
-	    append flags " " $torture_current_flags
-	}
 	foreach required_flag $required_flags {
 	    switch -- $required_flag {
 		target -
@@ -1043,7 +1044,14 @@  proc check-function-bodies { args } {
 
     global srcdir
     set input_filename "$srcdir/$filename"
-    set output_filename "[file rootname [file tail $filename]].s"
+    set output_filename "[file rootname [file tail $filename]]"
+    if { [string match "* -flto *" " ${flags} "]
+	 && ![string match "* -fno-use-linker-plugin *" " ${flags} "]
+	 && ![string match "* -ffat-lto-objects *" " ${flags} "] } {
+	append output_filename ".ltrans0.ltrans.s"
+    } else {
+	append output_filename ".s"
+    }
 
     set prefix [lindex $args 0]
     set prefix_len [string length $prefix]