Mercurial > hg > CbC > CbC_gcc
comparison gcc/selftest-rtl.h @ 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 /* A self-testing framework, for use by -fself-test. | |
2 Copyright (C) 2016-2017 Free Software Foundation, Inc. | |
3 | |
4 This file is part of GCC. | |
5 | |
6 GCC is free software; you can redistribute it and/or modify it under | |
7 the terms of the GNU General Public License as published by the Free | |
8 Software Foundation; either version 3, or (at your option) any later | |
9 version. | |
10 | |
11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GCC; see the file COPYING3. If not see | |
18 <http://www.gnu.org/licenses/>. */ | |
19 | |
20 #ifndef GCC_SELFTEST_RTL_H | |
21 #define GCC_SELFTEST_RTL_H | |
22 | |
23 /* The selftest code should entirely disappear in a production | |
24 configuration, hence we guard all of it with #if CHECKING_P. */ | |
25 | |
26 #if CHECKING_P | |
27 | |
28 class rtx_reuse_manager; | |
29 | |
30 namespace selftest { | |
31 | |
32 /* Verify that X is dumped as EXPECTED_DUMP, using compact mode. | |
33 Use LOC as the effective location when reporting errors. */ | |
34 | |
35 extern void | |
36 assert_rtl_dump_eq (const location &loc, const char *expected_dump, rtx x, | |
37 rtx_reuse_manager *reuse_manager); | |
38 | |
39 /* Verify that RTX is dumped as EXPECTED_DUMP, using compact mode. */ | |
40 | |
41 #define ASSERT_RTL_DUMP_EQ(EXPECTED_DUMP, RTX) \ | |
42 assert_rtl_dump_eq (SELFTEST_LOCATION, (EXPECTED_DUMP), (RTX), NULL) | |
43 | |
44 /* As above, but using REUSE_MANAGER when dumping. */ | |
45 | |
46 #define ASSERT_RTL_DUMP_EQ_WITH_REUSE(EXPECTED_DUMP, RTX, REUSE_MANAGER) \ | |
47 assert_rtl_dump_eq (SELFTEST_LOCATION, (EXPECTED_DUMP), (RTX), \ | |
48 (REUSE_MANAGER)) | |
49 | |
50 /* Evaluate rtx EXPECTED and ACTUAL and compare them with == | |
51 (i.e. pointer equality), calling ::selftest::pass if they are | |
52 equal, aborting if they are non-equal. */ | |
53 | |
54 #define ASSERT_RTX_PTR_EQ(EXPECTED, ACTUAL) \ | |
55 SELFTEST_BEGIN_STMT \ | |
56 const char *desc = "ASSERT_RTX_PTR_EQ (" #EXPECTED ", " #ACTUAL ")"; \ | |
57 ::selftest::assert_rtx_ptr_eq_at (SELFTEST_LOCATION, desc, (EXPECTED), \ | |
58 (ACTUAL)); \ | |
59 SELFTEST_END_STMT | |
60 | |
61 /* Compare rtx EXPECTED and ACTUAL by pointer equality, calling | |
62 ::selftest::pass if they are equal, aborting if they are non-equal. | |
63 LOC is the effective location of the assertion, MSG describes it. */ | |
64 | |
65 extern void assert_rtx_ptr_eq_at (const location &loc, const char *msg, | |
66 rtx expected, rtx actual); | |
67 | |
68 /* A class for testing RTL function dumps. */ | |
69 | |
70 class rtl_dump_test | |
71 { | |
72 public: | |
73 /* Takes ownership of PATH. */ | |
74 rtl_dump_test (const location &loc, char *path); | |
75 ~rtl_dump_test (); | |
76 | |
77 private: | |
78 char *m_path; | |
79 }; | |
80 | |
81 /* Get the insn with the given uid, or NULL if not found. */ | |
82 | |
83 extern rtx_insn *get_insn_by_uid (int uid); | |
84 | |
85 extern void verify_three_block_rtl_cfg (function *fun); | |
86 | |
87 } /* end of namespace selftest. */ | |
88 | |
89 #endif /* #if CHECKING_P */ | |
90 | |
91 #endif /* GCC_SELFTEST_RTL_H */ |