| 1 | /* General-purpose hooks. |
| 2 | Copyright (C) 2002-2025 Free Software Foundation, Inc. |
| 3 | |
| 4 | This program is free software; you can redistribute it and/or modify it |
| 5 | under the terms of the GNU General Public License as published by the |
| 6 | Free Software Foundation; either version 3, or (at your option) any |
| 7 | later version. |
| 8 | |
| 9 | This program is distributed in the hope that it will be useful, |
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 | GNU General Public License for more details. |
| 13 | |
| 14 | You should have received a copy of the GNU General Public License |
| 15 | along with this program; see the file COPYING3. If not see |
| 16 | <http://www.gnu.org/licenses/>. |
| 17 | |
| 18 | In other words, you are welcome to use, share and improve this program. |
| 19 | You are forbidden to forbid anyone else to use, share and improve |
| 20 | what you give them. Help stamp out software-hoarding! */ |
| 21 | |
| 22 | #ifndef GCC_HOOKS_H |
| 23 | #define GCC_HOOKS_H |
| 24 | |
| 25 | |
| 26 | extern bool hook_bool_void_false (void); |
| 27 | extern bool hook_bool_void_true (void); |
| 28 | extern bool hook_bool_bool_false (bool); |
| 29 | extern bool hook_bool_bool_gcc_optionsp_false (bool, struct gcc_options *); |
| 30 | extern bool hook_bool_dwcfi_dwcfioprndtyperef_false (dwarf_call_frame_info, |
| 31 | dw_cfi_oprnd_type &); |
| 32 | extern bool hook_bool_FILEptr_dwcfiptr_false (FILE *, dw_cfi_ref); |
| 33 | extern bool hook_bool_const_int_const_int_true (const int, const int); |
| 34 | extern bool hook_bool_mode_false (machine_mode); |
| 35 | extern bool hook_bool_mode_true (machine_mode); |
| 36 | extern bool hook_bool_mode_mode_true (machine_mode, machine_mode); |
| 37 | extern bool hook_bool_mode_const_rtx_false (machine_mode, const_rtx); |
| 38 | extern bool hook_bool_mode_const_rtx_true (machine_mode, const_rtx); |
| 39 | extern bool hook_bool_mode_rtx_false (machine_mode, rtx); |
| 40 | extern bool hook_bool_mode_rtx_true (machine_mode, rtx); |
| 41 | extern bool hook_bool_const_rtx_insn_const_rtx_insn_true (const rtx_insn *, |
| 42 | const rtx_insn *); |
| 43 | extern bool hook_bool_mode_uhwi_false (machine_mode, |
| 44 | unsigned HOST_WIDE_INT); |
| 45 | extern bool hook_bool_puint64_puint64_true (poly_uint64, poly_uint64); |
| 46 | extern bool hook_bool_uint_uint_mode_false (unsigned int, unsigned int, |
| 47 | machine_mode); |
| 48 | extern bool hook_bool_uint_mode_true (unsigned int, machine_mode); |
| 49 | extern bool hook_bool_tree_false (tree); |
| 50 | extern bool hook_bool_const_tree_false (const_tree); |
| 51 | extern bool hook_bool_const_tree_const_tree_true (const_tree, const_tree); |
| 52 | extern bool hook_bool_tree_true (tree); |
| 53 | extern bool hook_bool_const_tree_true (const_tree); |
| 54 | extern bool hook_bool_gsiptr_false (gimple_stmt_iterator *); |
| 55 | extern bool hook_bool_const_tree_hwi_hwi_const_tree_false (const_tree, |
| 56 | HOST_WIDE_INT, |
| 57 | HOST_WIDE_INT, |
| 58 | const_tree); |
| 59 | extern bool hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree, |
| 60 | HOST_WIDE_INT, |
| 61 | HOST_WIDE_INT, |
| 62 | const_tree); |
| 63 | extern bool hook_bool_rtx_insn_true (rtx_insn *); |
| 64 | extern bool hook_bool_rtx_false (rtx); |
| 65 | extern bool hook_bool_rtx_insn_int_false (rtx_insn *, int); |
| 66 | extern bool hook_bool_uintp_uintp_false (unsigned int *, unsigned int *); |
| 67 | extern bool hook_bool_reg_class_t_false (reg_class_t regclass); |
| 68 | extern bool hook_bool_mode_mode_reg_class_t_true (machine_mode, machine_mode, |
| 69 | reg_class_t); |
| 70 | extern bool hook_bool_mode_reg_class_t_reg_class_t_false (machine_mode, |
| 71 | reg_class_t, |
| 72 | reg_class_t); |
| 73 | extern bool hook_bool_rtx_mode_int_int_intp_bool_false (rtx, machine_mode, |
| 74 | int, int, int *, bool); |
| 75 | extern bool hook_bool_tree_tree_false (tree, tree); |
| 76 | extern bool hook_bool_tree_tree_true (tree, tree); |
| 77 | extern bool hook_bool_tree_bool_false (tree, bool); |
| 78 | extern bool hook_bool_wint_wint_uint_bool_true (const widest_int &, |
| 79 | const widest_int &, |
| 80 | unsigned int, bool); |
| 81 | |
| 82 | extern void hook_void_void (void); |
| 83 | extern void hook_void_constcharptr (const char *); |
| 84 | extern void hook_void_rtx_insn_int (rtx_insn *, int); |
| 85 | extern void hook_void_FILEptr_constcharptr (FILE *, const char *); |
| 86 | extern void hook_void_FILEptr_constcharptr_const_tree (FILE *, const char *, |
| 87 | const_tree); |
| 88 | extern bool hook_bool_FILEptr_rtx_false (FILE *, rtx); |
| 89 | extern void hook_void_FILEptr_tree (FILE *, tree); |
| 90 | extern void hook_void_tree (tree); |
| 91 | extern void hook_void_tree_treeptr (tree, tree *); |
| 92 | extern void hook_void_int_int (int, int); |
| 93 | extern void hook_void_gcc_optionsp (struct gcc_options *); |
| 94 | extern bool hook_bool_uint_true (unsigned int); |
| 95 | extern bool hook_bool_uint_uintp_false (unsigned int, unsigned int *); |
| 96 | |
| 97 | extern int hook_int_uint_mode_1 (unsigned int, machine_mode); |
| 98 | extern int hook_int_const_tree_0 (const_tree); |
| 99 | extern int hook_int_const_tree_const_tree_1 (const_tree, const_tree); |
| 100 | extern int hook_int_rtx_0 (rtx); |
| 101 | extern int hook_int_rtx_1 (rtx); |
| 102 | extern int hook_int_rtx_insn_0 (rtx_insn *); |
| 103 | extern int hook_int_rtx_insn_unreachable (rtx_insn *); |
| 104 | extern int hook_int_rtx_bool_0 (rtx, bool); |
| 105 | extern int hook_int_rtx_mode_as_bool_0 (rtx, machine_mode, addr_space_t, |
| 106 | bool); |
| 107 | |
| 108 | extern HOST_WIDE_INT hook_hwi_void_0 (void); |
| 109 | |
| 110 | extern tree hook_tree_const_tree_null (const_tree); |
| 111 | extern tree hook_tree_void_null (void); |
| 112 | |
| 113 | extern tree hook_tree_tree_bool_null (tree, bool); |
| 114 | extern tree hook_tree_tree_tree_null (tree, tree); |
| 115 | extern tree hook_tree_tree_tree_tree_null (tree, tree, tree); |
| 116 | extern tree hook_tree_tree_int_treep_bool_null (tree, int, tree *, bool); |
| 117 | extern tree hook_tree_treeptr_tree_tree_int_boolptr_null (tree *, tree, tree, int, bool *); |
| 118 | |
| 119 | extern unsigned hook_uint_void_0 (void); |
| 120 | extern unsigned int hook_uint_mode_0 (machine_mode); |
| 121 | |
| 122 | extern bool default_can_output_mi_thunk_no_vcall (const_tree, HOST_WIDE_INT, |
| 123 | HOST_WIDE_INT, const_tree); |
| 124 | |
| 125 | extern rtx hook_rtx_rtx_identity (rtx); |
| 126 | extern rtx hook_rtx_rtx_null (rtx); |
| 127 | extern rtx hook_rtx_tree_int_null (tree, int); |
| 128 | |
| 129 | extern char *hook_charptr_void_null (void); |
| 130 | extern const char *hook_constcharptr_void_null (void); |
| 131 | extern const char *hook_constcharptr_const_tree_null (const_tree); |
| 132 | extern const char *hook_constcharptr_const_rtx_insn_null (const rtx_insn *); |
| 133 | extern const char *hook_constcharptr_const_tree_const_tree_null (const_tree, const_tree); |
| 134 | extern const char *hook_constcharptr_int_const_tree_null (int, const_tree); |
| 135 | extern const char *hook_constcharptr_int_const_tree_const_tree_null (int, const_tree, const_tree); |
| 136 | |
| 137 | extern opt_machine_mode hook_optmode_mode_uhwi_none (machine_mode, |
| 138 | unsigned HOST_WIDE_INT); |
| 139 | #endif |
| 140 | |