Hi,

This is a v2 of:
https://gcc.gnu.org/pipermail/gcc-patches/2024-August/659966.html
which is rebased on top of Richard S's patch to reduce the cut-and-paste in
scanltranstree.exp (thanks again for doing that).

Tested on aarch64-linux-gnu, OK for trunk?

Thanks,
Alex

-- >8 --

This extends the scan-ltrans-tree* helpers to create RTL variants.  This
is needed to check the behaviour of an RTL pass under LTO.

gcc/ChangeLog:

        PR libstdc++/116140
        * doc/sourcebuild.texi: Document ltrans-rtl value of kind for
        scan-<kind>-dump*.

gcc/testsuite/ChangeLog:

        PR libstdc++/116140
        * lib/scanltranstree.exp (scan-ltrans-rtl-dump): New.
        (scan-ltrans-rtl-dump-not): New.
        (scan-ltrans-rtl-dump-dem): New.
        (scan-ltrans-rtl-dump-dem-not): New.
        (scan-ltrans-rtl-dump-times): New.
---
 gcc/testsuite/lib/scanltranstree.exp | 80 +++++++++++++---------------
 1 file changed, 37 insertions(+), 43 deletions(-)

diff --git a/gcc/testsuite/lib/scanltranstree.exp b/gcc/testsuite/lib/scanltranstree.exp
index bc6e02dc369..a7d4de3765f 100644
--- a/gcc/testsuite/lib/scanltranstree.exp
+++ b/gcc/testsuite/lib/scanltranstree.exp
@@ -19,50 +19,44 @@
 
 load_lib scandump.exp
 
-# The first item in the list is an LTO equivalent of the second item
-# in the list; see the documentation of the second item for details.
-foreach { name scan type suffix } {
-    scan-ltrans-tree-dump scan-dump ltrans-tree t
-    scan-ltrans-tree-dump-not scan-dump-not ltrans-tree t
-    scan-ltrans-tree-dump-dem scan-dump-dem ltrans-tree t
-    scan-ltrans-tree-dump-dem-not scan-dump-dem-not ltrans-tree t
-} {
-    eval [string map [list @NAME@ $name \
-			   @SCAN@ $scan \
-			   @TYPE@ $type \
-			   @SUFFIX@ $suffix] {
-        proc @NAME@ { args } {
-	    if { [llength $args] < 2 } {
-		error "@NAME@: too few arguments"
-		return
-	    }
-	    if { [llength $args] > 3 } {
-		error "@NAME@: too many arguments"
-		return
+# Define scan-ltrans-{tree,rtl}-dump{,-not,-dem,-dem-not}.  These are LTO
+# variants of the corresponding functions without -ltrans in the name.
+foreach ir { tree rtl } {
+    foreach modifier { {} -not -dem -dem-not } {
+	eval [string map [list @NAME@ scan-ltrans-$ir-dump$modifier \
+			       @SCAN@ scan$modifier \
+			       @TYPE@ ltrans-$ir \
+			       @SUFFIX@ [string index $ir 0]] {
+	    proc @NAME@ { args } {
+		if { [llength $args] < 2 } {
+		    error "@NAME@: too few arguments"
+		    return
+		}
+		if { [llength $args] > 3 } {
+		    error "@NAME@: too many arguments"
+		    return
+		}
+		if { [llength $args] >= 3 } {
+		    @SCAN@ @TYPE@ [lindex $args 0] \
+			"\[0-9\]\[0-9\]\[0-9\]@SUFFIX@.[lindex $args 1]" \
+			".ltrans0.ltrans" \
+			[lindex $args 2]
+		} else {
+		    @SCAN@ @TYPE@ [lindex $args 0] \
+			"\[0-9\]\[0-9\]\[0-9\]@SUFFIX@.[lindex $args 1]" \
+			".ltrans0.ltrans"
+		}
 	    }
-	    if { [llength $args] >= 3 } {
-		@SCAN@ @TYPE@ [lindex $args 0] \
-		    "\[0-9\]\[0-9\]\[0-9\]@SUFFIX@.[lindex $args 1]" \
-		    ".ltrans0.ltrans" \
-		    [lindex $args 2]
-	    } else {
-		@SCAN@ @TYPE@ [lindex $args 0] \
-		    "\[0-9\]\[0-9\]\[0-9\]@SUFFIX@.[lindex $args 1]" \
-		    ".ltrans0.ltrans"
-	    }
-        }
-    }]
+	}]
+    }
 }
 
-# The first item in the list is an LTO equivalent of the second item
-# in the list; see the documentation of the second item for details.
-foreach { name scan type suffix } {
-    scan-ltrans-tree-dump-times scan-dump-times ltrans-tree t
-} {
-    eval [string map [list @NAME@ $name \
-			   @SCAN@ $scan \
-			   @TYPE@ $type \
-			   @SUFFIX@ $suffix] {
+# Define scan-ltrans-{tree,rtl}-dump-times.  These are LTO variants of the
+# corresponding functions without -ltrans in the name.
+foreach ir { tree rtl } {
+    eval [string map [list @NAME@ scan-ltrans-$ir-dump-times \
+			   @TYPE@ ltrans-$ir \
+			   @SUFFIX@ [string index $ir 0]] {
 	proc @NAME@ { args } {
 	    if { [llength $args] < 3 } {
 		error "@NAME@: too few arguments"
@@ -73,11 +67,11 @@ foreach { name scan type suffix } {
 		return
 	    }
 	    if { [llength $args] >= 4 } {
-		@SCAN@ "@TYPE@" [lindex $args 0] [lindex $args 1] \
+		scan-dump-times "@TYPE@" [lindex $args 0] [lindex $args 1] \
 		    "\[0-9\]\[0-9\]\[0-9\]@SUFFIX@.[lindex $args 2]" \
 		    ".ltrans0.ltrans" [lindex $args 3]
 	    } else {
-		@SCAN@ "@TYPE@" [lindex $args 0] [lindex $args 1] \
+		scan-dump-times "@TYPE@" [lindex $args 0] [lindex $args 1] \
 		    "\[0-9\]\[0-9\]\[0-9\]@SUFFIX@.[lindex $args 2]" \
 		    ".ltrans0.ltrans"
 	    }

Reply via email to