1 # Copyright
(C
) 1997-2023 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 #
Define g
++ callbacks
for dg.exp.
21 proc g
++-dg
-test
{ prog do_what extra_tool_flags
} {
22 return [gcc
-dg
-test
-1 g
++_target_compile $prog $do_what $extra_tool_flags
]
26 proc g
++-dg
-prune
{ system text } {
27 return [gcc
-dg
-prune $
system $
text]
30 # Modified dg
-runtest that runs tests in multiple standard modes
,
31 # unless they specifically specify one standard.
32 proc g
++-dg
-runtest
{ testcases flags default
-extra
-flags
} {
35 foreach test $testcases
{
36 #
If we
're only testing specific files and this isn't one of them
, skip it.
37 if ![runtest_file_p $runtests $test
] {
41 #
If the testcase specifies a standard
, use that one.
42 #
If not
, run it under several standards
, allowing GNU extensions
43 #
if there
's a dg-options line.
44 if ![search_for $test "-std=*++"] {
45 if [search_for $test "dg-options"] {
46 set std_prefix "-std=gnu++"
48 set std_prefix "-std=c++"
51 # See g++.exp for the initial value of this list.
53 if { [llength $gpp_std_list] > 0 } {
54 set std_list $gpp_std_list
56 # If the test requires a newer C++ version than which
57 # is tested by default, use that C++ version for that
58 # single test. Or if a test checks behavior specifically for
59 # one C++ version, include that version in the default list.
60 # These should be adjusted whenever the default std_list is
61 # updated or newer C++ effective target is added.
62 if [search_for $test "\{ dg-do * \{ target c++23"] {
63 set std_list { 23 26 }
64 } elseif [search_for $test "\{ dg-do * \{ target c++26"] {
66 } elseif [search_for $test "c++11_only"] {
67 set std_list { 98 11 14 20 }
69 set std_list { 98 14 17 20 }
74 if { $x eq "impcx" } then { set x "26 -fimplicit-constexpr" }
75 lappend option_list "${std_prefix}$x"
78 set option_list { "" }
81 set nshort [file tail [file dirname $test]]/[file tail $test]
83 foreach flags_t $option_list {
84 verbose "Testing $nshort, $flags $flags_t" 1
85 dg-test $test "$flags $flags_t" ${default-extra-flags}