From: Hans-Peter Nilsson Date: Wed, 22 Nov 2000 01:40:49 +0000 (+0000) Subject: gcc-dg.exp: load_lib scanasm.exp. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d93415c9e0064046445a12b14147c273e6d96405;p=platform%2Fupstream%2Fgcc.git gcc-dg.exp: load_lib scanasm.exp. * lib/gcc-dg.exp: load_lib scanasm.exp. (scan-assembler, scan-assembler-not): Break out to scanasm.exp. * lib/g++-dg.exp: load_lib scanasm.exp. * lib/scanasm.exp: New. (scan-assembler, scan-assembler-not): Add optional arguments to test name, or if not present, the pattern name. (scan-assembler-dem, scan-assembler-demnot): New. * g++.dg/dg.exp: New. From-SVN: r37636 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 156fb19..dd9e32c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2000-11-22 Hans-Peter Nilsson + + * lib/gcc-dg.exp: load_lib scanasm.exp. + (scan-assembler, scan-assembler-not): Break out to scanasm.exp. + * lib/g++-dg.exp: load_lib scanasm.exp. + * lib/scanasm.exp: New. + (scan-assembler, scan-assembler-not): Add optional arguments to + test name, or if not present, the pattern name. + (scan-assembler-dem, scan-assembler-demnot): New. + + * g++.dg/dg.exp: New. + 2000-11-21 Neil Booth * gcc.dg/cpp/integrated1.c: Remove. diff --git a/gcc/testsuite/g++.dg/dg.exp b/gcc/testsuite/g++.dg/dg.exp new file mode 100644 index 0000000..e1e82e5 --- /dev/null +++ b/gcc/testsuite/g++.dg/dg.exp @@ -0,0 +1,39 @@ +# Copyright (C) 2000 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gcc@prep.ai.mit.edu + +# G++ testsuite that uses the `dg.exp' driver. + +# Load support procs. +load_lib g++-dg.exp + +# If a testcase doesn't have special options, use these. +global DEFAULT_CXXFLAGS +if ![info exists DEFAULT_CXXFLAGS] then { + set DEFAULT_CXXFLAGS " -ansi -pedantic-errors -Wno-long-long" +} + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[CS\]]] \ + "" $DEFAULT_CXXFLAGS + +# All done. +dg-finish diff --git a/gcc/testsuite/lib/g++-dg.exp b/gcc/testsuite/lib/g++-dg.exp index cad429e..febba81 100644 --- a/gcc/testsuite/lib/g++-dg.exp +++ b/gcc/testsuite/lib/g++-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997, 1999 Free Software Foundation, Inc. +# Copyright (C) 1997, 1999, 2000 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 @@ -20,6 +20,7 @@ # Define g++ callbacks for dg.exp. load_lib dg.exp +load_lib scanasm.exp proc g++-dg-test { prog do_what extra_tool_flags } { # Set up the compiler flags, based on what we're going to do. diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index d18449d..8dcc6c6 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -20,6 +20,7 @@ load_lib dg.exp load_lib file-format.exp load_lib target-supports.exp +load_lib scanasm.exp if ![info exists TORTURE_OPTIONS] { # It is theoretically beneficial to group all of the O2/O3 options together, @@ -161,35 +162,3 @@ proc gcc-dg-runtest { testcases default-extra-flags } { } } } - -# Utility for scanning compiler result, invoked via dg-final. -# Call pass if pattern is present, otherwise fail. -proc scan-assembler { testcase pattern } { - global subdir - - set fd [open [file rootname $testcase].s r] - set text [read $fd] - close $fd - - if [regexp -- $pattern $text] { - pass "$subdir/$testcase scan-assembler" - } else { - fail "$subdir/$testcase scan-assembler" - } -} - -# Call pass if pattern is not present, otherwise fail. -proc scan-assembler-not { testcase pattern } { - global subdir - - set fd [open [file rootname $testcase].s r] - set text [read $fd] - close $fd - - if ![regexp -- $pattern $text] { - pass "$subdir/$testcase scan-assembler-not" - } else { - fail "$subdir/$testcase scan-assembler-not" - } -} - diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp new file mode 100644 index 0000000..da0a7a0 --- /dev/null +++ b/gcc/testsuite/lib/scanasm.exp @@ -0,0 +1,123 @@ +# Copyright (C) 2000 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gcc@prep.ai.mit.edu + +# Various utilities for scanning assembler output, used by gcc-dg.exp and +# g++-dg.exp. + +# Utility for scanning compiler result, invoked via dg-final. +# Call pass if pattern is present, otherwise fail. +proc scan-assembler { testcase pattern args } { + global subdir + + set fd [open [file rootname $testcase].s r] + set text [read $fd] + close $fd + + set vmessage [concat $args] + if { $vmessage == ""} { + set vmessage $pattern + } + + if [regexp -- $pattern $text] { + pass "$subdir/$testcase scan-assembler $vmessage" + } else { + fail "$subdir/$testcase scan-assembler $vmessage" + } +} + +# Call pass if pattern is not present, otherwise fail. +proc scan-assembler-not { testcase pattern args } { + global subdir + + set fd [open [file rootname $testcase].s r] + set text [read $fd] + close $fd + + set vmessage [concat $args] + if { $vmessage == ""} { + set vmessage $pattern + } + + if ![regexp -- $pattern $text] { + pass "$subdir/$testcase scan-assembler-not $vmessage" + } else { + fail "$subdir/$testcase scan-assembler-not $vmessage" + } +} + +# Utility for scanning demangled compiler result, invoked via dg-final. +# Call pass if pattern is present, otherwise fail. +proc scan-assembler-dem { testcase pattern args } { + global subdir + global cxxfilt + global base_dir + + # Find c++filt like we find g++ in g++.exp. + if ![info exists cxxfilt] { + set 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" + } + + set fd [open "| $cxxfilt < [file rootname $testcase].s" r] + set text [read $fd] + close $fd + + set vmessage [concat $args] + if { $vmessage == ""} { + set vmessage $pattern + } + + if [regexp -- $pattern $text] { + pass "$subdir/$testcase scan-assembler $vmessage" + } else { + fail "$subdir/$testcase scan-assembler $vmessage" + } +} + +# Call pass if demangled pattern is not present, otherwise fail. +proc scan-assembler-dem-not { testcase pattern args } { + global subdir + global cxxfilt + global base_dir + + # Find c++filt like we find g++ in g++.exp. + if ![info exists cxxfilt] { + set 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" + } + + set fd [open "| $cxxfilt < [file rootname $testcase].s" r] + set text [read $fd] + close $fd + + set vmessage [concat $args] + if { $vmessage == ""} { + set vmessage $pattern + } + + if ![regexp -- $pattern $text] { + pass "$subdir/$testcase scan-assembler-not $vmessage" + } else { + fail "$subdir/$testcase scan-assembler-not $vmessage" + } +}