1 # Copyright
(C
) 2006-2017 Free Software Foundation
, Inc.
3 # This
program is free software
; you can redistribute it and
/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation
; either version
3 of the License
, or
6 #
(at your option
) any later version.
8 # This
program is distributed in the hope that it will be useful
,
9 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License
for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with GCC
; see the file COPYING3.
If not see
15 #
<http
://www.gnu.org
/licenses
/>.
17 # Various utilities
for scanning rtl dump output
, used by gcc
-dg.exp and
22 # Utility
for scanning compiler result
, invoked via dg
-final.
23 #
Call pass
if pattern is present
, otherwise fail.
25 #
Argument 0 is the regexp to match
26 #
Argument 1 is the
name of the dumped rtl pass
27 #
Argument 2 handles expected failures and the like
28 proc scan
-rtl
-dump
{ args } {
30 if { [llength $
args] < 2 } {
31 error
"scan-rtl-dump: too few arguments"
34 if { [llength $
args] > 3 } {
35 error
"scan-rtl-dump: too many arguments"
38 if { [llength $
args] >= 3 } {
39 scan
-dump
"rtl" [lindex $args 0] "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 1]" [lindex $args 2]
41 scan
-dump
"rtl" [lindex $args 0] "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 1]"
45 force_conventional_output_for scan
-rtl
-dump
47 #
Call pass
if pattern is present given number of times
, otherwise fail.
48 #
Argument 0 is the regexp to match
49 #
Argument 1 is number of times the regexp must be found
50 #
Argument 2 is the
name of the dumped rtl pass
51 #
Argument 3 handles expected failures and the like
52 proc scan
-rtl
-dump
-times
{ args } {
54 if { [llength $
args] < 3 } {
55 error
"scan-rtl-dump: too few arguments"
58 if { [llength $
args] > 4 } {
59 error
"scan-rtl-dump: too many arguments"
62 if { [llength $
args] >= 4 } {
63 scan
-dump
-times
"rtl" [lindex $args 0] [lindex $args 1] \
64 "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 2]" [lindex $args 3]
66 scan
-dump
-times
"rtl" [lindex $args 0] [lindex $args 1] \
67 "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 2]"
71 force_conventional_output_for scan
-rtl
-dump
-times
73 #
Call pass
if pattern is not present
, otherwise fail.
75 #
Argument 0 is the regexp to match
76 #
Argument 1 is the
name of the dumped rtl pass
77 #
Argument 2 handles expected failures and the like
78 proc scan
-rtl
-dump
-not
{ args } {
80 if { [llength $
args] < 2 } {
81 error
"scan-rtl-dump-not: too few arguments"
84 if { [llength $
args] > 3 } {
85 error
"scan-rtl-dump-not: too many arguments"
88 if { [llength $
args] >= 3 } {
89 scan
-dump
-not
"rtl" [lindex $args 0] \
90 "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 1]" [lindex $args 2]
92 scan
-dump
-not
"rtl" [lindex $args 0] \
93 "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 1]"
97 force_conventional_output_for scan
-rtl
-dump
-not
99 # Utility
for scanning demangled compiler result
, invoked via dg
-final.
100 #
Call pass
if pattern is present
, otherwise fail.
102 #
Argument 0 is the regexp to match
103 #
Argument 1 is the
name of the dumped rtl pass
104 #
Argument 2 handles expected failures and the like
105 proc scan
-rtl
-dump
-dem
{ args } {
107 if { [llength $
args] < 2 } {
108 error
"scan-rtl-dump-dem: too few arguments"
111 if { [llength $
args] > 3 } {
112 error
"scan-rtl-dump-dem: too many arguments"
115 if { [llength $
args] >= 3 } {
116 scan
-dump
-dem
"rtl" [lindex $args 0] \
117 "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 1]" [lindex $args 2]
119 scan
-dump
-dem
"rtl" [lindex $args 0] \
120 "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 1]"
124 force_conventional_output_for scan
-rtl
-dump
-dem
126 #
Call pass
if demangled pattern is not present
, otherwise fail.
128 #
Argument 0 is the regexp to match
129 #
Argument 1 is the
name of the dumped rtl pass
130 #
Argument 2 handles expected failures and the like
131 proc scan
-rtl
-dump
-dem
-not
{ args } {
133 if { [llength $
args] < 2 } {
134 error
"scan-rtl-dump-dem-not: too few arguments"
137 if { [llength $
args] > 3 } {
138 error
"scan-rtl-dump-dem-not: too many arguments"
141 if { [llength $
args] >= 3 } {
142 scan
-dump
-dem
-not
"rtl" [lindex $args 0] \
143 "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 1]" \
146 scan
-dump
-dem
-not
"rtl" [lindex $args 0] \
147 "\[0-9\]\[0-9\]\[0-9\]r.[lindex $args 1]"
151 force_conventional_output_for scan
-rtl
-dump
-dem
-not