On 28/08/2024 11:53, Richard Sandiford wrote:
> 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.

Gah, sorry -- those got lost in the rebase.  Is it OK to commit this
together with the doc changes included as per the previous patch?

Alex

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