Alex Coplan <alex.cop...@arm.com> writes:
> 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.

The patch only contains the gcc/testsuite changes, but those are ok
for trunk, thanks.

Richard

> ---
>  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