Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/plugin/plugin.exp @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 # Copyright (C) 2009-2017 Free Software Foundation, Inc. | |
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 | |
5 # the Free Software Foundation; either version 3 of the License, or | |
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 | |
14 # along with GCC; see the file COPYING3. If not see | |
15 # <http://www.gnu.org/licenses/>. | |
16 | |
17 # Test the functionality of the GCC plugin support | |
18 | |
19 load_lib target-supports.exp | |
20 load_lib gcc-dg.exp | |
21 | |
22 global TESTING_IN_BUILD_TREE | |
23 global ENABLE_PLUGIN | |
24 | |
25 # The plugin testcases currently only work when the build tree is available. | |
26 # Also check whether the host supports plugins. | |
27 if { ![info exists TESTING_IN_BUILD_TREE] || ![info exists ENABLE_PLUGIN] } { | |
28 return | |
29 } | |
30 | |
31 # If a testcase doesn't have special options, use these. | |
32 global DEFAULT_CFLAGS | |
33 if ![info exists DEFAULT_CFLAGS] then { | |
34 set DEFAULT_CFLAGS " -ansi -pedantic-errors" | |
35 } | |
36 | |
37 # The procedures in plugin-support.exp need these parameters. | |
38 set default_flags $DEFAULT_CFLAGS | |
39 | |
40 if $tracelevel then { | |
41 strace $tracelevel | |
42 } | |
43 | |
44 # Load support procs. | |
45 load_lib plugin-support.exp | |
46 | |
47 # These tests don't run runtest_file_p consistently if it | |
48 # doesn't return the same values, so disable parallelization | |
49 # of this *.exp file. The first parallel runtest to reach | |
50 # this will run all the tests serially. | |
51 if ![gcc_parallel_test_run_p plugin] { | |
52 return | |
53 } | |
54 gcc_parallel_test_enable 0 | |
55 | |
56 # Specify the plugin source file and the associated test files in a list. | |
57 # plugin_test_list={ {plugin1 test1 test2 ...} {plugin2 test1 ...} ... } | |
58 set plugin_test_list [list \ | |
59 { selfassign.c self-assign-test-1.c self-assign-test-2.c } \ | |
60 { ggcplug.c ggcplug-test-1.c } \ | |
61 { one_time_plugin.c one_time-test-1.c } \ | |
62 { start_unit_plugin.c start_unit-test-1.c } \ | |
63 { finish_unit_plugin.c finish_unit-test-1.c } \ | |
64 { wide-int_plugin.c wide-int-test-1.c } \ | |
65 { diagnostic_plugin_test_show_locus.c \ | |
66 diagnostic-test-show-locus-bw.c \ | |
67 diagnostic-test-show-locus-color.c \ | |
68 diagnostic-test-show-locus-parseable-fixits.c \ | |
69 diagnostic-test-show-locus-generate-patch.c } \ | |
70 { diagnostic_plugin_test_tree_expression_range.c \ | |
71 diagnostic-test-expressions-1.c } \ | |
72 { diagnostic_plugin_show_trees.c \ | |
73 diagnostic-test-show-trees-1.c } \ | |
74 { diagnostic_plugin_test_string_literals.c \ | |
75 diagnostic-test-string-literals-1.c \ | |
76 diagnostic-test-string-literals-2.c \ | |
77 diagnostic-test-string-literals-3.c \ | |
78 diagnostic-test-string-literals-4.c } \ | |
79 { location_overflow_plugin.c \ | |
80 location-overflow-test-1.c \ | |
81 location-overflow-test-2.c } \ | |
82 { must_tail_call_plugin.c \ | |
83 must-tail-call-1.c \ | |
84 must-tail-call-2.c } \ | |
85 ] | |
86 | |
87 foreach plugin_test $plugin_test_list { | |
88 # Replace each source file with its full-path name | |
89 for {set i 0} {$i < [llength $plugin_test]} {incr i} { | |
90 set basename [lindex $plugin_test $i] | |
91 set plugin_test [lreplace $plugin_test $i $i $srcdir/$subdir/$basename] | |
92 } | |
93 set plugin_src [lindex $plugin_test 0] | |
94 # If we're only testing specific files and this isn't one of them, skip it. | |
95 if ![runtest_file_p $runtests $plugin_src] then { | |
96 continue | |
97 } | |
98 # Skip tail call tests on targets that do not have sibcall_epilogue. | |
99 if {[regexp ".*must_tail_call_plugin.c" $plugin_src] | |
100 && [istarget arm*-*-*] | |
101 && [check_effective_target_arm_thumb1]} then { | |
102 continue | |
103 } | |
104 set plugin_input_tests [lreplace $plugin_test 0 0] | |
105 plugin-test-execute $plugin_src $plugin_input_tests | |
106 } | |
107 | |
108 # run the plugindir tests | |
109 | |
110 # Initialize `dg'. | |
111 dg-init | |
112 | |
113 # Main loop. | |
114 dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/plugindir*.\[cSi\]]] \ | |
115 "" $DEFAULT_CFLAGS | |
116 | |
117 # All done. | |
118 dg-finish | |
119 | |
120 gcc_parallel_test_enable 1 |