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