]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/targhooks.h
Fix some divmod_internal problems.
[thirdparty/gcc.git] / gcc / targhooks.h
CommitLineData
45550790 1/* Default target hook functions.
3aea1f79 2 Copyright (C) 2003-2014 Free Software Foundation, Inc.
45550790 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
8c4c00c1 8Software Foundation; either version 3, or (at your option) any later
45550790 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
8c4c00c1 17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
45550790 19
fd50b071 20extern bool default_legitimate_address_p (enum machine_mode, rtx, bool);
21
864af209 22extern void default_external_libcall (rtx);
41e3a0c7 23extern rtx default_legitimize_address (rtx, rtx, enum machine_mode);
864af209 24
77ad8e5a 25extern int default_unspec_may_trap_p (const_rtx, unsigned);
3b2411a8 26extern enum machine_mode default_promote_function_mode (const_tree, enum machine_mode,
27 int *, const_tree, int);
28extern enum machine_mode default_promote_function_mode_always_promote
29 (const_tree, enum machine_mode, int *, const_tree, int);
77ad8e5a 30
124ac4e4 31extern enum machine_mode default_cc_modes_compatible (enum machine_mode,
32 enum machine_mode);
33
fb80456a 34extern bool default_return_in_memory (const_tree, const_tree);
45550790 35
36extern rtx default_expand_builtin_saveregs (void);
39cba157 37extern void default_setup_incoming_varargs (cumulative_args_t, enum machine_mode, tree, int *, int);
e3e026e8 38extern rtx default_builtin_setjmp_frame_value (void);
39cba157 39extern bool default_pretend_outgoing_varargs_named (cumulative_args_t);
4e00ee67 40
95215948 41extern enum machine_mode default_eh_return_filter_mode (void);
0ef89dfd 42extern enum machine_mode default_libgcc_cmp_return_mode (void);
43extern enum machine_mode default_libgcc_shift_count_mode (void);
1bd43494 44extern enum machine_mode default_unwind_word_mode (void);
c49547c4 45extern unsigned HOST_WIDE_INT default_shift_truncation_mask
46 (enum machine_mode);
ac70caad 47extern unsigned int default_min_divisions_for_recip_mul (enum machine_mode);
4956440a 48extern int default_mode_rep_extended (enum machine_mode, enum machine_mode);
95215948 49
f1a0edff 50extern tree default_stack_protect_guard (void);
51extern tree default_external_stack_protect_fail (void);
52extern tree default_hidden_stack_protect_fail (void);
53
430be8e2 54extern enum machine_mode default_mode_for_suffix (char);
55
c1dc02de 56extern tree default_cxx_guard_type (void);
600f4be7 57extern tree default_cxx_get_cookie_size (tree);
b981d932 58
b981d932 59extern bool hook_pass_by_reference_must_pass_in_stack
39cba157 60 (cumulative_args_t, enum machine_mode mode, const_tree, bool);
13f08ee7 61extern bool hook_callee_copies_named
39cba157 62 (cumulative_args_t ca, enum machine_mode, const_tree, bool);
8ec87476 63
182e98f4 64extern void default_print_operand (FILE *, rtx, int);
65extern void default_print_operand_address (FILE *, rtx);
66extern bool default_print_operand_punct_valid_p (unsigned char);
d86d364d 67extern tree default_mangle_assembler_name (const char *);
68
b2aef146 69extern bool default_scalar_mode_supported_p (enum machine_mode);
183dc110 70extern bool targhook_words_big_endian (void);
71extern bool targhook_float_words_big_endian (void);
4c866b9b 72extern bool default_float_exceptions_rounding_supported_p (void);
1398cbfd 73extern bool default_decimal_float_supported_p (void);
9421ebb9 74extern bool default_fixed_point_supported_p (void);
13f08ee7 75
df9f2e40 76extern bool default_has_ifunc_p (void);
77
a9f1838b 78extern const char * default_invalid_within_doloop (const_rtx);
7dfa5ce3 79
31ac7341 80extern tree default_builtin_vectorized_function (tree, tree, tree);
22c2f6bd 81
011d9d16 82extern tree default_builtin_vectorized_conversion (unsigned int, tree, tree);
9d8bf4aa 83
0822b158 84extern int default_builtin_vectorization_cost (enum vect_cost_for_stmt, tree, int);
559093aa 85
d5b637fa 86extern tree default_builtin_reciprocal (unsigned int, bool, bool);
c3cc39c4 87
482a44fa 88extern HOST_WIDE_INT default_vector_alignment (const_tree);
89
a9f1838b 90extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
c6b19c5f 91extern bool
92default_builtin_support_vector_misalignment (enum machine_mode mode,
93 const_tree,
48e1416a 94 int, bool);
b24d851f 95extern enum machine_mode default_preferred_simd_mode (enum machine_mode mode);
421b11b1 96extern unsigned int default_autovectorize_vector_sizes (void);
4db2b577 97extern void *default_init_cost (struct loop *);
98extern unsigned default_add_stmt_cost (void *, int, enum vect_cost_for_stmt,
f97dec81 99 struct _stmt_vec_info *, int,
100 enum vect_cost_model_location);
101extern void default_finish_cost (void *, unsigned *, unsigned *, unsigned *);
4db2b577 102extern void default_destroy_cost_data (void *);
5a2538e1 103
13f08ee7 104/* These are here, and not in hooks.[ch], because not all users of
105 hooks.h include tm.h, and thus we don't have CUMULATIVE_ARGS. */
106
39cba157 107extern bool hook_bool_CUMULATIVE_ARGS_false (cumulative_args_t);
108extern bool hook_bool_CUMULATIVE_ARGS_true (cumulative_args_t);
13f08ee7 109
110extern bool hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false
39cba157 111 (cumulative_args_t, enum machine_mode, const_tree, bool);
13f08ee7 112extern bool hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true
39cba157 113 (cumulative_args_t, enum machine_mode, const_tree, bool);
f054eb3c 114extern int hook_int_CUMULATIVE_ARGS_mode_tree_bool_0
39cba157 115 (cumulative_args_t, enum machine_mode, tree, bool);
10fda9eb 116extern const char *hook_invalid_arg_for_unprototyped_fn
a9f1838b 117 (const_tree, const_tree, const_tree);
f387af4f 118extern void default_function_arg_advance
39cba157 119 (cumulative_args_t, enum machine_mode, const_tree, bool);
f387af4f 120extern rtx default_function_arg
39cba157 121 (cumulative_args_t, enum machine_mode, const_tree, bool);
f387af4f 122extern rtx default_function_incoming_arg
39cba157 123 (cumulative_args_t, enum machine_mode, const_tree, bool);
bd99ba64 124extern unsigned int default_function_arg_boundary (enum machine_mode,
125 const_tree);
17bfc2bc 126extern unsigned int default_function_arg_round_boundary (enum machine_mode,
127 const_tree);
a9f1838b 128extern bool hook_bool_const_rtx_commutative_p (const_rtx, int);
fb80456a 129extern rtx default_function_value (const_tree, const_tree, bool);
e5ce1073 130extern rtx default_libcall_value (enum machine_mode, const_rtx);
e1ce1485 131extern bool default_function_value_regno_p (const unsigned int);
567925e3 132extern rtx default_internal_arg_pointer (void);
82c7907c 133extern rtx default_static_chain (const_tree, bool);
82c7907c 134extern void default_trampoline_init (rtx, tree, rtx);
f5bc28da 135extern int default_return_pops_args (tree, tree, int);
964229b7 136extern reg_class_t default_branch_target_register_class (void);
c6a6cdaa 137extern bool default_lra_p (void);
138extern int default_register_priority (int);
4a2ca8f3 139extern bool default_register_usage_leveling_p (void);
c6a6cdaa 140extern bool default_different_addr_displacement_p (void);
964229b7 141extern reg_class_t default_secondary_reload (bool, rtx, reg_class_t,
142 enum machine_mode,
143 secondary_reload_info *);
cc5d3821 144extern void default_target_option_override (void);
fcf2ad9f 145extern void hook_void_bitmap (bitmap);
4e151b05 146extern int default_reloc_rw_mask (void);
97a424bc 147extern tree default_mangle_decl_assembler_name (tree, tree);
38475469 148extern tree default_emutls_var_fields (tree, tree *);
149extern tree default_emutls_var_init (tree, tree, tree);
747bf50d 150extern bool default_hard_regno_scratch_ok (unsigned int);
4e27ffd0 151extern bool default_mode_dependent_address_p (const_rtx, addr_space_t);
46f8e3b0 152extern bool default_target_option_valid_attribute_p (tree, tree, tree, int);
24470055 153extern bool default_target_option_pragma_parse (tree, tree);
7c88e513 154extern bool default_target_can_inline_p (tree, tree);
98155838 155extern bool default_valid_pointer_mode (enum machine_mode);
b3e7c666 156extern bool default_ref_may_alias_errno (struct ao_ref *);
98155838 157extern enum machine_mode default_addr_space_pointer_mode (addr_space_t);
158extern enum machine_mode default_addr_space_address_mode (addr_space_t);
159extern bool default_addr_space_valid_pointer_mode (enum machine_mode,
160 addr_space_t);
bd1a81f7 161extern bool default_addr_space_legitimate_address_p (enum machine_mode, rtx,
162 bool, addr_space_t);
163extern rtx default_addr_space_legitimize_address (rtx, rtx, enum machine_mode,
164 addr_space_t);
165extern bool default_addr_space_subset_p (addr_space_t, addr_space_t);
166extern rtx default_addr_space_convert (rtx, tree, tree);
906bb5c3 167extern unsigned int default_case_values_threshold (void);
751d3ba7 168extern bool default_have_conditional_execution (void);
4c0315d0 169
30f690e0 170extern bool default_libc_has_function (enum function_class);
171extern bool no_c99_libc_has_function (enum function_class);
172extern bool gnu_libc_has_function (enum function_class);
173
4c0315d0 174extern tree default_builtin_tm_load_store (tree);
175
964229b7 176extern int default_memory_move_cost (enum machine_mode, reg_class_t, bool);
177extern int default_register_move_cost (enum machine_mode, reg_class_t,
178 reg_class_t);
e6078fbb 179
8637d6a2 180extern bool default_profile_before_prologue (void);
09a17585 181extern reg_class_t default_preferred_reload_class (rtx, reg_class_t);
71db0d8b 182extern reg_class_t default_preferred_output_reload_class (rtx, reg_class_t);
d78118a3 183extern reg_class_t default_preferred_rename_class (reg_class_t rclass);
24dd0668 184extern bool default_class_likely_spilled_p (reg_class_t);
d3ba22dc 185extern unsigned char default_class_max_nregs (reg_class_t, enum machine_mode);
cc7d6aed 186
187extern enum unwind_info_type default_debug_unwind_info (void);
ae2b9f1f 188
b7740973 189extern void default_canonicalize_comparison (int *, rtx *, rtx *, bool);
d5065e6e 190
ae2b9f1f 191extern int default_label_align_after_barrier_max_skip (rtx);
192extern int default_loop_align_max_skip (rtx);
193extern int default_label_align_max_skip (rtx);
194extern int default_jump_align_max_skip (rtx);
3b73548b 195extern section * default_function_section(tree decl, enum node_frequency freq,
196 bool startup, bool exit);
9af5ce0c 197extern enum machine_mode default_get_reg_raw_mode (int);
4bac51c9 198
0e763b2a 199extern void *default_get_pch_validity (size_t *);
200extern const char *default_pch_valid_p (const void *, size_t);
367b1459 201
202extern void default_asm_output_ident_directive (const char*);
203
17f446a0 204extern enum machine_mode default_cstore_mode (enum insn_code);
f91ed644 205extern bool default_member_type_forces_blk (const_tree, enum machine_mode);
b560fabd 206extern void default_atomic_assign_expand_fenv (tree *, tree *, tree *);
b94f16f4 207extern tree build_va_arg_indirect_ref (tree);
208extern tree std_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *);
a04a7bec 209extern bool can_use_doloop_if_innermost (const widest_int &,
210 const widest_int &,
211 unsigned int, bool);