]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/selftest-run-tests.c
Introduce RTL function reader
[thirdparty/gcc.git] / gcc / selftest-run-tests.c
CommitLineData
99b4f3a2 1/* Implementation of selftests.
aad93da1 2 Copyright (C) 2015-2017 Free Software Foundation, Inc.
99b4f3a2 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"
7af4d06b 24#include "tree.h"
b07ada29 25#include "target.h"
7af4d06b 26#include "langhooks.h"
c081d2fc 27#include "options.h"
99b4f3a2 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{
c081d2fc 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
99b4f3a2 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
363d8665 54 /* Sanity-check for selftests themselves. */
55 selftest_c_tests ();
56
99b4f3a2 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 ();
bccee643 63 pretty_print_c_tests ();
99b4f3a2 64 wide_int_cc_tests ();
f61d7248 65 ggc_tests_c_tests ();
f5b88ba1 66 sreal_c_tests ();
77ddb3e5 67 fibonacci_heap_c_tests ();
f1b96af2 68 typed_splay_tree_c_tests ();
99b4f3a2 69
70 /* Mid-level data structures. */
71 input_c_tests ();
72 tree_c_tests ();
73 gimple_c_tests ();
74 rtl_tests_c_tests ();
836c1c68 75 read_rtl_function_c_tests ();
99b4f3a2 76
77 /* Higher-level tests, or for components that other selftests don't
78 rely on. */
79 diagnostic_show_locus_c_tests ();
6628b04d 80 diagnostic_c_tests ();
fe066ce3 81 edit_context_c_tests ();
99b4f3a2 82 fold_const_c_tests ();
83 spellcheck_c_tests ();
819cba30 84 spellcheck_tree_c_tests ();
99b4f3a2 85 tree_cfg_c_tests ();
86
87 /* This one relies on most of the above. */
88 function_tests_c_tests ();
89
b07ada29 90 /* Run any target-specific selftests. */
91 if (targetm.run_target_selftests)
92 targetm.run_target_selftests ();
93
3d9a2fb3 94 store_merging_c_tests ();
95
7af4d06b 96 /* Run any lang-specific selftests. */
97 lang_hooks.run_lang_selftests ();
98
09c2dc4c 99 /* Force a GC at the end of the selftests, to shake out GC-related
100 issues. For example, if any GC-managed items have buggy (or missing)
101 finalizers, this last collection will ensure that things that were
102 failed to be finalized can be detected by valgrind. */
103 forcibly_ggc_collect ();
104
99b4f3a2 105 /* Finished running tests. */
106 long finish_time = get_run_time ();
107 long elapsed_time = finish_time - start_time;
108
109 fprintf (stderr,
110 "-fself-test: %i pass(es) in %ld.%06ld seconds\n",
111 num_passes,
112 elapsed_time / 1000000, elapsed_time % 1000000);
113}
114
115#endif /* #if CHECKING_P */