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