]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/selftest-run-tests.c
* ChangeLog: Fix whitespace.
[thirdparty/gcc.git] / gcc / selftest-run-tests.c
CommitLineData
d9b950dd 1/* Implementation of selftests.
cbe34bb5 2 Copyright (C) 2015-2017 Free Software Foundation, Inc.
d9b950dd
DM
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
8Software Foundation; either version 3, or (at your option) any later
9version.
10
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14for more details.
15
16You should have received a copy of the GNU General Public License
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
19
20#include "config.h"
21#include "system.h"
22#include "coretypes.h"
23#include "selftest.h"
895aa8e1 24#include "tree.h"
40af5894 25#include "target.h"
895aa8e1 26#include "langhooks.h"
ecfc21ff 27#include "options.h"
d9b950dd
DM
28
29/* This function needed to be split out from selftest.c as it references
30 tests from the whole source tree, and so is within
31 OBJS in Makefile.in, whereas selftest.o is within OBJS-libcommon.
32 This allows us to embed tests within files in OBJS-libcommon without
33 introducing a dependency on objects within OBJS. */
34
35#if CHECKING_P
36
37/* Run all tests, aborting if any fail. */
38
39void
40selftest::run_tests ()
41{
ecfc21ff
DM
42 /* Makefile.in has -fself-test=$(srcdir)/testsuite/selftests, so that
43 flag_self_test contains the path to the selftest subdirectory of the
44 source tree (without a trailing slash). Copy it up to
45 path_to_selftest_files, to avoid selftest.c depending on
46 option-handling. */
47 path_to_selftest_files = flag_self_test;
48
d9b950dd
DM
49 long start_time = get_run_time ();
50
51 /* Run all the tests, in hand-coded order of (approximate) dependencies:
52 run the tests for lowest-level code first. */
53
5714dbda
DM
54 /* Sanity-check for selftests themselves. */
55 selftest_c_tests ();
56
d9b950dd
DM
57 /* Low-level data structures. */
58 bitmap_c_tests ();
59 et_forest_c_tests ();
60 hash_map_tests_c_tests ();
61 hash_set_tests_c_tests ();
62 vec_c_tests ();
4ccab56d 63 pretty_print_c_tests ();
d9b950dd 64 wide_int_cc_tests ();
8c4294b2 65 ggc_tests_c_tests ();
dcbdb17a 66 sreal_c_tests ();
ba1a7a0f 67 fibonacci_heap_c_tests ();
950f6c85 68 typed_splay_tree_c_tests ();
d9b950dd
DM
69
70 /* Mid-level data structures. */
71 input_c_tests ();
72 tree_c_tests ();
73 gimple_c_tests ();
74 rtl_tests_c_tests ();
75
76 /* Higher-level tests, or for components that other selftests don't
77 rely on. */
78 diagnostic_show_locus_c_tests ();
a93eac6a 79 diagnostic_c_tests ();
c65236d6 80 edit_context_c_tests ();
d9b950dd
DM
81 fold_const_c_tests ();
82 spellcheck_c_tests ();
f254671f 83 spellcheck_tree_c_tests ();
d9b950dd
DM
84 tree_cfg_c_tests ();
85
86 /* This one relies on most of the above. */
87 function_tests_c_tests ();
88
40af5894
DM
89 /* Run any target-specific selftests. */
90 if (targetm.run_target_selftests)
91 targetm.run_target_selftests ();
92
c22d8787
KT
93 store_merging_c_tests ();
94
895aa8e1
DM
95 /* Run any lang-specific selftests. */
96 lang_hooks.run_lang_selftests ();
97
6c3b5bf0
DM
98 /* Force a GC at the end of the selftests, to shake out GC-related
99 issues. For example, if any GC-managed items have buggy (or missing)
100 finalizers, this last collection will ensure that things that were
101 failed to be finalized can be detected by valgrind. */
102 forcibly_ggc_collect ();
103
d9b950dd
DM
104 /* Finished running tests. */
105 long finish_time = get_run_time ();
106 long elapsed_time = finish_time - start_time;
107
108 fprintf (stderr,
109 "-fself-test: %i pass(es) in %ld.%06ld seconds\n",
110 num_passes,
111 elapsed_time / 1000000, elapsed_time % 1000000);
112}
113
114#endif /* #if CHECKING_P */