# 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]" } }