From ab4b7a8a92920d1c77e53e2a33bbee4a96fc0948 Mon Sep 17 00:00:00 2001 From: jconner Date: Tue, 13 Sep 2005 23:27:25 +0000 Subject: [PATCH] * lib/gcc-dg.exp: Load scanipa.exp. (cleanup-dump): New procedure. (cleanup-rtl-dump, cleanup-tree-dump, cleanup-ipa-dump): Use it. * lib/scandump.exp: New file. * lib/scantree.exp: Use it. * lib/scanipa.exp: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104244 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 9 ++ gcc/testsuite/lib/gcc-dg.exp | 48 +++------ gcc/testsuite/lib/scandump.exp | 217 +++++++++++++++++++++++++++++++++++++++++ gcc/testsuite/lib/scanipa.exp | 141 ++++++++++++++++++++++++++ gcc/testsuite/lib/scantree.exp | 187 ++++++++--------------------------- 5 files changed, 423 insertions(+), 179 deletions(-) create mode 100644 gcc/testsuite/lib/scandump.exp create mode 100644 gcc/testsuite/lib/scanipa.exp diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 512fccbe4eb..337d4fd2a50 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2005-09-13 Josh Conner + + * lib/gcc-dg.exp: Load scanipa.exp. + (cleanup-dump): New procedure. + (cleanup-rtl-dump, cleanup-tree-dump, cleanup-ipa-dump): Use it. + * lib/scandump.exp: New file. + * lib/scantree.exp: Use it. + * lib/scanipa.exp: New file. + 2005-09-13 Erik Edelmann PR fortran/17740 diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index 01643986304..68c4aacf8e8 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -20,6 +20,7 @@ load_lib target-supports.exp load_lib target-supports-dg.exp load_lib scanasm.exp load_lib scantree.exp +load_lib scanipa.exp load_lib prune.exp load_lib libgloss.exp load_lib target-libpath.exp @@ -343,52 +344,35 @@ proc cleanup-repo-files { } { # # SUFFIX is the filename suffix pattern. proc cleanup-rtl-dump { suffix } { - # This assumes that we are two frames down from dg-test or some other proc - # that stores the filename of the testcase in a local variable "name". - # A cleaner solution would require a new DejaGnu release. - upvar 2 name testcase - remove-build-file "[file tail $testcase].??.$suffix" - - # Clean up dump files for additional source files. - if [info exists additional_sources] { - foreach srcfile $additional_sources { - remove-build-file "[file tail $srcfile].??.$suffix" - } - } + cleanup-dump "\[0-9\]\[0-9\].$suffix" } # Remove a specific tree dump file for the current test. # -# SUFFIX is the file suffix pattern. +# SUFFIX is the tree dump file suffix pattern. proc cleanup-tree-dump { suffix } { - # This assumes that we are two frames down from dg-test or some other proc - # that stores the filename of the testcase in a local variable "name". - # A cleaner solution would require a new DejaGnu release. - upvar 2 name testcase - remove-build-file "[file tail $testcase].t??.$suffix" - - # Clean up dump files for additional source files. - if [info exists additional_sources] { - foreach srcfile $additional_sources { - remove-build-file "[file tail $srcfile].t??.$suffix" - } - } + cleanup-dump "t\[0-9\]\[0-9\].$suffix" } # Remove a specific ipa dump file for the current test. # -# SUFFIX is the file suffix pattern. +# SUFFIX is the ipa dump file suffix pattern. proc cleanup-ipa-dump { suffix } { - # This assumes that we are two frames down from dg-test or some other proc - # that stores the filename of the testcase in a local variable "name". - # A cleaner solution would require a new DejaGnu release. - upvar 2 name testcase - remove-build-file "[file tail $testcase].i??.$suffix" + cleanup-dump "i\[0-9\]\[0-9\].$suffix" +} + +# Remove all dump files with the provided suffix. +proc cleanup-dump { suffix } { + # This assumes that we are three frames down from dg-test or some other + # proc that stores the filename of the testcase in a local variable + # "name". A cleaner solution would require a new DejaGnu release. + upvar 3 name testcase + remove-build-file "[file tail $testcase].$suffix" # Clean up dump files for additional source files. if [info exists additional_sources] { foreach srcfile $additional_sources { - remove-build-file "[file tail $srcfile].i??.$suffix" + remove-build-file "[file tail $srcfile].$suffix" } } } diff --git a/gcc/testsuite/lib/scandump.exp b/gcc/testsuite/lib/scandump.exp new file mode 100644 index 00000000000..c968a8c1f98 --- /dev/null +++ b/gcc/testsuite/lib/scandump.exp @@ -0,0 +1,217 @@ +# Copyright (C) 2000, 2002, 2003, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Various utilities for scanning dump output, used by gcc-dg.exp and +# g++-dg.exp. +# +# This is largely borrowed from scanasm.exp. + +# Utility for scanning compiler result, invoked via dg-final. +# Call pass if pattern is present, otherwise fail. +# +# Argument 0 is the type of dump we are searching (rtl, tree, ipa) +# Argument 1 is the regexp to match. +# Argument 2 is the suffix for the dump file +# Argument 3 handles expected failures and the like +proc scan-dump { args } { + + if { [llength $args] >= 4 } { + switch [dg-process-target [lindex $args 3]] { + "S" { } + "N" { return } + "F" { setup_xfail "*-*-*" } + "P" { } + } + } + + # This assumes that we are three frames down from dg-test, and that + # it still stores the filename of the testcase in a local variable "name". + # A cleaner solution would require a new DejaGnu release. + upvar 3 name testcase + + set src [file tail [lindex $testcase 0]] + set output_file "[glob $src.[lindex $args 2]]" + + set fd [open $output_file r] + set text [read $fd] + close $fd + + if [regexp -- [lindex $args 1] $text] { + pass "$testcase scan-[lindex $args 0]-dump [lindex $args 1]" + } else { + fail "$testcase scan-[lindex $args 0]-dump [lindex $args 1]" + } +} + +# Call pass if pattern is present given number of times, otherwise fail. +# Argument 0 is the type of dump we are searching (rtl, tree, ipa) +# Argument 1 is the regexp to match. +# Argument 2 is number of times the regexp must be found +# Argument 3 is the suffix for the dump file +# Argument 4 handles expected failures and the like +proc scan-dump-times { args } { + + if { [llength $args] >= 5 } { + switch [dg-process-target [lindex $args 4]] { + "S" { } + "N" { return } + "F" { setup_xfail "*-*-*" } + "P" { } + } + } + + # This assumes that we are three frames down from dg-test, and that + # it still stores the filename of the testcase in a local variable "name". + # A cleaner solution would require a new DejaGnu release. + upvar 3 name testcase + + set src [file tail [lindex $testcase 0]] + set output_file "[glob $src.[lindex $args 3]]" + + set fd [open $output_file r] + set text [read $fd] + close $fd + + if { [llength [regexp -inline -all -- [lindex $args 1] $text]] == [lindex $args 2]} { + pass "$testcase scan-[lindex $args 0]-dump-times [lindex $args 1] [lindex $args 2]" + } else { + fail "$testcase scan-[lindex $args 0]-dump-times [lindex $args 1] [lindex $args 2]" + } +} + +# Call pass if pattern is not present, otherwise fail. +# +# Argument 0 is the type of dump we are searching (rtl, tree, ipa) +# Argument 1 is the regexp to match. +# Argument 2 is the suffix for the dump file +# Argument 3 handles expected failures and the like +proc scan-dump-not { args } { + + if { [llength $args] >= 4 } { + switch [dg-process-target [lindex $args 3]] { + "S" { } + "N" { return } + "F" { setup_xfail "*-*-*" } + "P" { } + } + } + + # This assumes that we are three frames down from dg-test, and that + # it still stores the filename of the testcase in a local variable "name". + # A cleaner solution would require a new DejaGnu release. + upvar 3 name testcase + set src [file tail [lindex $testcase 0]] + set output_file "[glob $src.[lindex $args 2]]" + + set fd [open $output_file r] + set text [read $fd] + close $fd + + if ![regexp -- [lindex $args 1] $text] { + pass "$testcase scan-[lindex $args 0]-dump-not [lindex $args 1]" + } else { + fail "$testcase scan-[lindex $args 0]-dump-not [lindex $args 1]" + } +} + +# Utility for scanning demangled compiler result, invoked via dg-final. +# Call pass if pattern is present, otherwise fail. +# +# Argument 0 is the type of dump we are searching (rtl, tree, ipa) +# Argument 1 is the regexp to match. +# Argument 2 is the suffix for the dump file +# Argument 3 handles expected failures and the like +proc scan-dump-dem { args } { + global cxxfilt + global base_dir + + if { [llength $args] >= 4 } { + switch [dg-process-target [lindex $args 3]] { + "S" { } + "N" { return } + "F" { setup_xfail "*-*-*" } + "P" { } + } + } + + # Find c++filt like we find g++ in g++.exp. + if ![info exists cxxfilt] { + set cxxfilt [findfile $base_dir/../../binutils/cxxfilt \ + $base_dir/../../binutils/cxxfilt \ + [findfile $base_dir/../c++filt $base_dir/../c++filt \ + [findfile $base_dir/c++filt $base_dir/c++filt \ + [transform c++filt]]]] + verbose -log "c++filt is $cxxfilt" + } + + upvar 3 name testcase + set src [file tail [lindex $testcase 0]] + set output_file "[glob $src.[lindex $args 2]]" + + set fd [open "| $cxxfilt < $output_file" r] + set text [read $fd] + close $fd + + if [regexp -- [lindex $args 1] $text] { + pass "$testcase scan-[lindex $args 0]-dump-dem [lindex $args 1]" + } else { + fail "$testcase scan-[lindex $args 0]-dump-dem [lindex $args 1]" + } +} + +# Call pass if demangled pattern is not present, otherwise fail. +# +# Argument 0 is the type of dump we are searching (rtl, tree, ipa) +# Argument 1 is the regexp to match. +# Argument 2 is the suffix for the dump file +# Argument 3 handles expected failures and the like +proc scan-dump-dem-not { args } { + global cxxfilt + global base_dir + + if { [llength $args] >= 4 } { + switch [dg-process-target [lindex $args 3]] { + "S" { } + "N" { return } + "F" { setup_xfail "*-*-*" } + "P" { } + } + } + + # Find c++filt like we find g++ in g++.exp. + if ![info exists cxxfilt] { + set cxxfilt [findfile $base_dir/../../binutils/cxxfilt \ + $base_dir/../../binutils/cxxfilt \ + [findfile $base_dir/../c++filt $base_dir/../c++filt \ + [findfile $base_dir/c++filt $base_dir/c++filt \ + [transform c++filt]]]] + verbose -log "c++filt is $cxxfilt" + } + + upvar 3 name testcase + set src [file tail [lindex $testcase 0]] + set output_file "[glob $src.[lindex $args 2]]" + + set fd [open "| $cxxfilt < $output_file" r] + set text [read $fd] + close $fd + + if ![regexp -- [lindex $args 1] $text] { + pass "$testcase scan-[lindex $args 0]-dump-dem-not [lindex $args 1]" + } else { + fail "$testcase scan-[lindex $args 0]-dump-dem-not [lindex $args 1]" + } +} diff --git a/gcc/testsuite/lib/scanipa.exp b/gcc/testsuite/lib/scanipa.exp new file mode 100644 index 00000000000..97688a9c78f --- /dev/null +++ b/gcc/testsuite/lib/scanipa.exp @@ -0,0 +1,141 @@ +# Copyright (C) 2000, 2002, 2003, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Various utilities for scanning ipa dump output, used by gcc-dg.exp and +# g++-dg.exp. + +load_lib scandump.exp + +# Utility for scanning compiler result, invoked via dg-final. +# Call pass if pattern is present, otherwise fail. +# +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped ipa pass +# Argument 2 handles expected failures and the like +proc scan-ipa-dump { args } { + + if { [llength $args] < 2 } { + error "scan-ipa-dump: too few arguments" + return + } + if { [llength $args] > 3 } { + error "scan-ipa-dump: too many arguments" + return + } + if { [llength $args] >= 3 } { + scan-dump "ipa" [lindex $args 0] "i\[0-9\]\[0-9\].[lindex $args 1]" [lindex $args 2] + } else { + scan-dump "ipa" [lindex $args 0] "i\[0-9\]\[0-9\].[lindex $args 1]" + } +} + +# Call pass if pattern is present given number of times, otherwise fail. +# Argument 0 is the regexp to match +# Argument 1 is number of times the regexp must be found +# Argument 2 is the name of the dumped ipa pass +# Argument 3 handles expected failures and the like +proc scan-ipa-dump-times { args } { + + if { [llength $args] < 3 } { + error "scan-ipa-dump: too few arguments" + return + } + if { [llength $args] > 4 } { + error "scan-ipa-dump: too many arguments" + return + } + if { [llength $args] >= 4 } { + scan-dump-times "ipa" [lindex $args 0] [lindex $args 1] \ + "i\[0-9\]\[0-9\].[lindex $args 2]" [lindex $args 3] + } else { + scan-dump-times "ipa" [lindex $args 0] [lindex $args 1] \ + "i\[0-9\]\[0-9\].[lindex $args 2]" + } +} + +# Call pass if pattern is not present, otherwise fail. +# +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped ipa pass +# Argument 2 handles expected failures and the like +proc scan-ipa-dump-not { args } { + + if { [llength $args] < 2 } { + error "scan-ipa-dump-not: too few arguments" + return + } + if { [llength $args] > 3 } { + error "scan-ipa-dump-not: too many arguments" + return + } + if { [llength $args] >= 3 } { + scan-dump-not "ipa" [lindex $args 0] \ + "i\[0-9\]\[0-9\].[lindex $args 1]" [lindex $args 2] + } else { + scan-dump-not "ipa" [lindex $args 0] \ + "i\[0-9\]\[0-9\].[lindex $args 1]" + } +} + +# Utility for scanning demangled compiler result, invoked via dg-final. +# Call pass if pattern is present, otherwise fail. +# +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped ipa pass +# Argument 2 handles expected failures and the like +proc scan-ipa-dump-dem { args } { + + if { [llength $args] < 2 } { + error "scan-ipa-dump-dem: too few arguments" + return + } + if { [llength $args] > 3 } { + error "scan-ipa-dump-dem: too many arguments" + return + } + if { [llength $args] >= 3 } { + scan-dump-dem "ipa" [lindex $args 0] \ + "i\[0-9\]\[0-9\].[lindex $args 1]" [lindex $args 2] + } else { + scan-dump-dem "ipa" [lindex $args 0] \ + "i\[0-9\]\[0-9\].[lindex $args 1]" + } +} + +# Call pass if demangled pattern is not present, otherwise fail. +# +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped ipa pass +# Argument 2 handles expected failures and the like +proc scan-ipa-dump-dem-not { args } { + + if { [llength $args] < 2 } { + error "scan-ipa-dump-dem-not: too few arguments" + return + } + if { [llength $args] > 3 } { + error "scan-ipa-dump-dem-not: too many arguments" + return + } + if { [llength $args] >= 3 } { + scan-dump-dem-not "ipa" [lindex $args 0] \ + "i\[0-9\]\[0-9\].[lindex $args 1]" \ + [lindex $args 2] + } else { + scan-dump-dem-not "ipa" [lindex $args 0] \ + "i\[0-9\]\[0-9\].[lindex $args 1]" + } +} diff --git a/gcc/testsuite/lib/scantree.exp b/gcc/testsuite/lib/scantree.exp index 281cf4232d8..d0f57969b97 100644 --- a/gcc/testsuite/lib/scantree.exp +++ b/gcc/testsuite/lib/scantree.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 2000, 2002, 2003, 2005 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,233 +16,126 @@ # Various utilities for scanning tree dump output, used by gcc-dg.exp and # g++-dg.exp. -# -# This is largely borrowed from scanasm.exp. + +load_lib scandump.exp # Utility for scanning compiler result, invoked via dg-final. # Call pass if pattern is present, otherwise fail. # -# Argument 0 is the regexp to match. -# Argument 1 is the suffix for the tree dump file +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped tree pass # Argument 2 handles expected failures and the like proc scan-tree-dump { args } { + if { [llength $args] < 2 } { error "scan-tree-dump: too few arguments" - return + return } if { [llength $args] > 3 } { error "scan-tree-dump: too many arguments" return } if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { - "S" { } - "N" { return } - "F" { setup_xfail "*-*-*" } - "P" { } - } - } - - # This assumes that we are two frames down from dg-test, and that - # it still stores the filename of the testcase in a local variable "name". - # A cleaner solution would require a new dejagnu release. - upvar 2 name testcase - - # This must match the rule in gcc-dg.exp. - set src [file tail [lindex $testcase 0]] - set output_file "[glob $src.t??.[lindex $args 1]]" - - set fd [open $output_file r] - set text [read $fd] - close $fd - - if [regexp -- [lindex $args 0] $text] { - pass "$testcase scan-tree-dump [lindex $args 0]" + scan-dump "tree" [lindex $args 0] "t\[0-9\]\[0-9\].[lindex $args 1]" [lindex $args 2] } else { - fail "$testcase scan-tree-dump [lindex $args 0]" + scan-dump "tree" [lindex $args 0] "t\[0-9\]\[0-9\].[lindex $args 1]" } } # Call pass if pattern is present given number of times, otherwise fail. -# Argument 0 is the regexp to match. +# Argument 0 is the regexp to match # Argument 1 is number of times the regexp must be found -# Argument 2 is the suffix for the tree dump file +# Argument 2 is the name of the dumped tree pass # Argument 3 handles expected failures and the like proc scan-tree-dump-times { args } { + if { [llength $args] < 3 } { error "scan-tree-dump: too few arguments" - return + return } if { [llength $args] > 4 } { error "scan-tree-dump: too many arguments" return } if { [llength $args] >= 4 } { - switch [dg-process-target [lindex $args 3]] { - "S" { } - "N" { return } - "F" { setup_xfail "*-*-*" } - "P" { } - } - } - - # This assumes that we are two frames down from dg-test, and that - # it still stores the filename of the testcase in a local variable "name". - # A cleaner solution would require a new dejagnu release. - upvar 2 name testcase - - # This must match the rule in gcc-dg.exp. - set src [file tail [lindex $testcase 0]] - set output_file "[glob $src.t??.[lindex $args 2]]" - - set fd [open $output_file r] - set text [read $fd] - close $fd - - if { [llength [regexp -inline -all -- [lindex $args 0] $text]] == [lindex $args 1]} { - pass "$testcase scan-tree-dump-times [lindex $args 0] [lindex $args 1]" + scan-dump-times "tree" [lindex $args 0] [lindex $args 1] \ + "t\[0-9\]\[0-9\].[lindex $args 2]" [lindex $args 3] } else { - fail "$testcase scan-tree-dump-times [lindex $args 0] [lindex $args 1]" + scan-dump-times "tree" [lindex $args 0] [lindex $args 1] \ + "t\[0-9\]\[0-9\].[lindex $args 2]" } } # Call pass if pattern is not present, otherwise fail. # -# Argument 0 is the regexp to match. -# Argument 1 is the suffix for the tree dump file +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped tree pass # Argument 2 handles expected failures and the like proc scan-tree-dump-not { args } { + if { [llength $args] < 2 } { error "scan-tree-dump-not: too few arguments" - return + return } if { [llength $args] > 3 } { error "scan-tree-dump-not: too many arguments" return } if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { - "S" { } - "N" { return } - "F" { setup_xfail "*-*-*" } - "P" { } - } - } - - upvar 2 name testcase - set src [file tail [lindex $testcase 0]] - set output_file "[glob $src.t??.[lindex $args 1]]" - - set fd [open $output_file r] - set text [read $fd] - close $fd - - if ![regexp -- [lindex $args 0] $text] { - pass "$testcase scan-tree-dump-not [lindex $args 0]" + scan-dump-not "tree" [lindex $args 0] \ + "t\[0-9\]\[0-9\].[lindex $args 1]" [lindex $args 2] } else { - fail "$testcase scan-tree-dump-not [lindex $args 0]" + scan-dump-not "tree" [lindex $args 0] \ + "t\[0-9\]\[0-9\].[lindex $args 1]" } } # Utility for scanning demangled compiler result, invoked via dg-final. # Call pass if pattern is present, otherwise fail. # -# Argument 0 is the regexp to match. -# Argument 1 is the suffix for the tree dump file +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped tree pass # Argument 2 handles expected failures and the like proc scan-tree-dump-dem { args } { - global cxxfilt - global base_dir if { [llength $args] < 2 } { error "scan-tree-dump-dem: too few arguments" - return + return } if { [llength $args] > 3 } { error "scan-tree-dump-dem: too many arguments" return } if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { - "S" { } - "N" { return } - "F" { setup_xfail "*-*-*" } - "P" { } - } - } - - # Find c++filt like we find g++ in g++.exp. - if ![info exists cxxfilt] { - set cxxfilt [findfile $base_dir/../../binutils/cxxfilt \ - $base_dir/../../binutils/cxxfilt \ - [findfile $base_dir/../c++filt $base_dir/../c++filt \ - [findfile $base_dir/c++filt $base_dir/c++filt \ - [transform c++filt]]]] - verbose -log "c++filt is $cxxfilt" - } - - upvar 2 name testcase - set src [file tail [lindex $testcase 0]] - set output_file "[glob $src.t??.[lindex $args 1]]" - - set fd [open "| $cxxfilt < $output_file" r] - set text [read $fd] - close $fd - - if [regexp -- [lindex $args 0] $text] { - pass "$testcase scan-tree-dump-dem [lindex $args 0]" + scan-dump-dem "tree" [lindex $args 0] \ + "t\[0-9\]\[0-9\].[lindex $args 1]" [lindex $args 2] } else { - fail "$testcase scan-tree-dump-dem [lindex $args 0]" + scan-dump-dem "tree" [lindex $args 0] \ + "t\[0-9\]\[0-9\].[lindex $args 1]" } } # Call pass if demangled pattern is not present, otherwise fail. # -# Argument 0 is the regexp to match. -# Argument 1 is the suffix for the tree dump file +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped tree pass # Argument 2 handles expected failures and the like proc scan-tree-dump-dem-not { args } { - global cxxfilt - global base_dir if { [llength $args] < 2 } { error "scan-tree-dump-dem-not: too few arguments" - return + return } if { [llength $args] > 3 } { error "scan-tree-dump-dem-not: too many arguments" return } if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { - "S" { } - "N" { return } - "F" { setup_xfail "*-*-*" } - "P" { } - } - } - - # Find c++filt like we find g++ in g++.exp. - if ![info exists cxxfilt] { - set cxxfilt [findfile $base_dir/../../binutils/cxxfilt \ - $base_dir/../../binutils/cxxfilt \ - [findfile $base_dir/../c++filt $base_dir/../c++filt \ - [findfile $base_dir/c++filt $base_dir/c++filt \ - [transform c++filt]]]] - verbose -log "c++filt is $cxxfilt" - } - - upvar 2 name testcase - set src [file tail [lindex $testcase 0]] - set output_file "[glob $src.t??.[lindex $args 1]]" - - set fd [open "| $cxxfilt < $output_file" r] - set text [read $fd] - close $fd - - if ![regexp -- [lindex $args 0] $text] { - pass "$testcase scan-tree-dump-dem-not [lindex $args 0]" + scan-dump-dem-not "tree" [lindex $args 0] \ + "t\[0-9\]\[0-9\].[lindex $args 1]" \ + [lindex $args 2] } else { - fail "$testcase scan-tree-dump-dem-not [lindex $args 0]" + scan-dump-dem-not "tree" [lindex $args 0] \ + "t\[0-9\]\[0-9\].[lindex $args 1]" } } -- 2.11.0