# Copyright (C) 2000-2014 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 3 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 GCC; see the file COPYING3. If not see # . # 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] "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 1]" [lindex $args 2] } else { scan-dump "ipa" [lindex $args 0] "\[0-9\]\[0-9\]\[0-9\]i.[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] \ "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 2]" [lindex $args 3] } else { scan-dump-times "ipa" [lindex $args 0] [lindex $args 1] \ "\[0-9\]\[0-9\]\[0-9\]i.[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] \ "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 1]" [lindex $args 2] } else { scan-dump-not "ipa" [lindex $args 0] \ "\[0-9\]\[0-9\]\[0-9\]i.[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] \ "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 1]" [lindex $args 2] } else { scan-dump-dem "ipa" [lindex $args 0] \ "\[0-9\]\[0-9\]\[0-9\]i.[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] \ "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 1]" \ [lindex $args 2] } else { scan-dump-dem-not "ipa" [lindex $args 0] \ "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 1]" } }