On 28/08/2024 18:34, Andrew Pinski wrote:
> On Wed, Aug 28, 2024 at 4:05 AM Alex Coplan <alex.cop...@arm.com> wrote:
> >
> > 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?
> 
> I am getting a new ERROR after this. Maybe you didn't notice this
> since you were looking for new FAIL.
> +ERROR: gcc.dg/ipa/ipa-icf-38.c: error executing dg-final: variable is
> not assigned by any conversion specifiers
> 
> The error corresponds to:
> /* { dg-final { scan-ltrans-tree-dump "Function foo" "optimized" } } */
> 
> That is the only testcase which uses `scan-ltrans-tree-dump*` even.

This should now be fixed as of
g:4b729d2ff3259e5b1d40f93d4f9e7edf5f0064f4.

Thanks,
Alex

> 
> Thanks,
> Andrew Pinski
> 
> 
> 
> >
> > 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