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. 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" > > > }