]>
Commit | Line | Data |
---|---|---|
f1717362 | 1 | # Copyright (C) 2004-2016 Free Software Foundation, Inc. |
add3fcd1 | 2 | |
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 | |
f63ff66b | 5 | # the Free Software Foundation; either version 3 of the License, or |
add3fcd1 | 6 | # (at your option) any later version. |
7 | # | |
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. | |
12 | # | |
13 | # You should have received a copy of the GNU General Public License | |
f63ff66b | 14 | # along with GCC; see the file COPYING3. If not see |
15 | # <http://www.gnu.org/licenses/>. | |
add3fcd1 | 16 | |
17 | # Define obj-c++ callbacks for dg.exp. | |
18 | ||
19 | load_lib gcc-dg.exp | |
20 | ||
21 | proc obj-c++-dg-test { prog do_what extra_tool_flags } { | |
22 | return [gcc-dg-test-1 obj-c++_target_compile $prog $do_what $extra_tool_flags] | |
23 | } | |
24 | ||
25 | ||
26 | proc obj-c++-dg-prune { system text } { | |
27 | return [gcc-dg-prune $system $text] | |
28 | } | |
0ab4c1ab | 29 | |
30 | # Modified dg-runtest that can cycle through a list of optimization options | |
31 | # as c-torture does. | |
faff04c3 | 32 | proc obj-c++-dg-runtest { testcases flags default-extra-flags } { |
0c93aabd | 33 | global runtests |
34 | ||
35 | # Some callers set torture options themselves; don't override those. | |
36 | set existing_torture_options [torture-options-exist] | |
37 | if { $existing_torture_options == 0 } { | |
38 | global DG_TORTURE_OPTIONS LTO_TORTURE_OPTIONS | |
39 | torture-init | |
40 | set-torture-options $DG_TORTURE_OPTIONS [list {}] $LTO_TORTURE_OPTIONS | |
41 | } | |
42 | dump-torture-options | |
43 | ||
44 | foreach test $testcases { | |
45 | global torture_with_loops torture_without_loops | |
46 | # If we're only testing specific files and this isn't one of | |
47 | # them, skip it. | |
48 | if ![runtest_file_p $runtests $test] { | |
49 | continue | |
50 | } | |
51 | ||
52 | # Look for a loop within the source code - if we don't find one, | |
53 | # don't pass -funroll[-all]-loops. | |
54 | if [expr [search_for $test "for*("]+[search_for $test "while*("]] { | |
55 | set option_list $torture_with_loops | |
56 | } else { | |
57 | set option_list $torture_without_loops | |
58 | } | |
59 | ||
60 | set nshort [file tail [file dirname $test]]/[file tail $test] | |
61 | ||
faff04c3 | 62 | foreach flags_t $option_list { |
0c93aabd | 63 | # combine flags so that dg-skip & xfail will see the extras. |
faff04c3 | 64 | set combined_flags "$flags $flags_t ${default-extra-flags}" |
0c93aabd | 65 | verbose "Testing $nshort, $combined_flags" 1 |
66 | dg-test $test $combined_flags "" | |
67 | } | |
68 | } | |
69 | ||
70 | if { $existing_torture_options == 0 } { | |
71 | torture-finish | |
72 | } | |
73 | } |