On 28/08/2024 11:53, Richard Sandiford wrote:
> Alex Coplan <[email protected]> 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"
> > }