]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/targhooks.h
Use rtx_insn for various target.def hooks
[thirdparty/gcc.git] / gcc / targhooks.h
CommitLineData
61f71b34 1/* Default target hook functions.
23a5b65a 2 Copyright (C) 2003-2014 Free Software Foundation, Inc.
61f71b34
DD
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
9dcd6f09 8Software Foundation; either version 3, or (at your option) any later
61f71b34
DD
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
9dcd6f09
NC
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
61f71b34 19
c6c3dba9
PB
20extern bool default_legitimate_address_p (enum machine_mode, rtx, bool);
21
6773a41c 22extern void default_external_libcall (rtx);
506d7b68 23extern rtx default_legitimize_address (rtx, rtx, enum machine_mode);
6773a41c 24
215b063c 25extern int default_unspec_may_trap_p (const_rtx, unsigned);
cde0f3fd
PB
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);
215b063c 30
e129d93a
ILT
31extern enum machine_mode default_cc_modes_compatible (enum machine_mode,
32 enum machine_mode);
33
586de218 34extern bool default_return_in_memory (const_tree, const_tree);
61f71b34
DD
35
36extern rtx default_expand_builtin_saveregs (void);
d5cc9181 37extern void default_setup_incoming_varargs (cumulative_args_t, enum machine_mode, tree, int *, int);
d6da68b9 38extern rtx default_builtin_setjmp_frame_value (void);
d5cc9181 39extern bool default_pretend_outgoing_varargs_named (cumulative_args_t);
c6e8c921 40
93f90be6 41extern enum machine_mode default_eh_return_filter_mode (void);
c7ff6e7a
AK
42extern enum machine_mode default_libgcc_cmp_return_mode (void);
43extern enum machine_mode default_libgcc_shift_count_mode (void);
7b0518e3 44extern enum machine_mode default_unwind_word_mode (void);
273a2526
RS
45extern unsigned HOST_WIDE_INT default_shift_truncation_mask
46 (enum machine_mode);
bc23502b 47extern unsigned int default_min_divisions_for_recip_mul (enum machine_mode);
b12cbf2c 48extern int default_mode_rep_extended (enum machine_mode, enum machine_mode);
93f90be6 49
7d69de61
RH
50extern tree default_stack_protect_guard (void);
51extern tree default_external_stack_protect_fail (void);
52extern tree default_hidden_stack_protect_fail (void);
53
c77cd3d1
UB
54extern enum machine_mode default_mode_for_suffix (char);
55
4185ae53 56extern tree default_cxx_guard_type (void);
46e995e0 57extern tree default_cxx_get_cookie_size (tree);
8cd5a4e0 58
8cd5a4e0 59extern bool hook_pass_by_reference_must_pass_in_stack
d5cc9181 60 (cumulative_args_t, enum machine_mode mode, const_tree, bool);
6cdd5672 61extern bool hook_callee_copies_named
d5cc9181 62 (cumulative_args_t ca, enum machine_mode, const_tree, bool);
951120ea 63
6e2188e0
NF
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);
77754180
DK
67extern tree default_mangle_assembler_name (const char *);
68
6dd53648 69extern bool default_scalar_mode_supported_p (enum machine_mode);
2e681adf
JR
70extern bool targhook_words_big_endian (void);
71extern bool targhook_float_words_big_endian (void);
9193fb05 72extern bool default_float_exceptions_rounding_supported_p (void);
0884546e 73extern bool default_decimal_float_supported_p (void);
ab22c1fa 74extern bool default_fixed_point_supported_p (void);
6cdd5672 75
2f251a05
AI
76extern bool default_has_ifunc_p (void);
77
ac44248e 78extern const char * default_invalid_within_doloop (const rtx_insn *);
a71a498d 79
62f7fd21 80extern tree default_builtin_vectorized_function (tree, tree, tree);
2505a3f2 81
88dd7150 82extern tree default_builtin_vectorized_conversion (unsigned int, tree, tree);
f57d17f1 83
720f5239 84extern int default_builtin_vectorization_cost (enum vect_cost_for_stmt, tree, int);
35e1a5e7 85
744aa42f 86extern tree default_builtin_reciprocal (unsigned int, bool, bool);
cc2137be 87
5aea1e76
UW
88extern HOST_WIDE_INT default_vector_alignment (const_tree);
89
3101faab 90extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
0601d0cf
RE
91extern bool
92default_builtin_support_vector_misalignment (enum machine_mode mode,
93 const_tree,
b8698a0f 94 int, bool);
cc4b5170 95extern enum machine_mode default_preferred_simd_mode (enum machine_mode mode);
767f865f 96extern unsigned int default_autovectorize_vector_sizes (void);
c3e7ee41
BS
97extern void *default_init_cost (struct loop *);
98extern unsigned default_add_stmt_cost (void *, int, enum vect_cost_for_stmt,
92345349
BS
99 struct _stmt_vec_info *, int,
100 enum vect_cost_model_location);
101extern void default_finish_cost (void *, unsigned *, unsigned *, unsigned *);
c3e7ee41 102extern void default_destroy_cost_data (void *);
5b900a4c 103
6cdd5672
RH
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
d5cc9181
JR
107extern bool hook_bool_CUMULATIVE_ARGS_false (cumulative_args_t);
108extern bool hook_bool_CUMULATIVE_ARGS_true (cumulative_args_t);
6cdd5672
RH
109
110extern bool hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false
d5cc9181 111 (cumulative_args_t, enum machine_mode, const_tree, bool);
6cdd5672 112extern bool hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true
d5cc9181 113 (cumulative_args_t, enum machine_mode, const_tree, bool);
78a52f11 114extern int hook_int_CUMULATIVE_ARGS_mode_tree_bool_0
d5cc9181 115 (cumulative_args_t, enum machine_mode, tree, bool);
4d3e6fae 116extern const char *hook_invalid_arg_for_unprototyped_fn
3101faab 117 (const_tree, const_tree, const_tree);
3c07301f 118extern void default_function_arg_advance
d5cc9181 119 (cumulative_args_t, enum machine_mode, const_tree, bool);
3c07301f 120extern rtx default_function_arg
d5cc9181 121 (cumulative_args_t, enum machine_mode, const_tree, bool);
3c07301f 122extern rtx default_function_incoming_arg
d5cc9181 123 (cumulative_args_t, enum machine_mode, const_tree, bool);
c2ed6cf8
NF
124extern unsigned int default_function_arg_boundary (enum machine_mode,
125 const_tree);
123148b5
BS
126extern unsigned int default_function_arg_round_boundary (enum machine_mode,
127 const_tree);
3101faab 128extern bool hook_bool_const_rtx_commutative_p (const_rtx, int);
586de218 129extern rtx default_function_value (const_tree, const_tree, bool);
7fc6a96b 130extern rtx default_libcall_value (enum machine_mode, const_rtx);
82f81f18 131extern bool default_function_value_regno_p (const unsigned int);
150cdc9e 132extern rtx default_internal_arg_pointer (void);
531ca746 133extern rtx default_static_chain (const_tree, bool);
531ca746 134extern void default_trampoline_init (rtx, tree, rtx);
079e7538 135extern int default_return_pops_args (tree, tree, int);
a87cf97e 136extern reg_class_t default_branch_target_register_class (void);
55a2c322
VM
137extern bool default_lra_p (void);
138extern int default_register_priority (int);
3b9ceb4b 139extern bool default_register_usage_leveling_p (void);
55a2c322 140extern bool default_different_addr_displacement_p (void);
a87cf97e
JR
141extern reg_class_t default_secondary_reload (bool, rtx, reg_class_t,
142 enum machine_mode,
143 secondary_reload_info *);
74f7912a 144extern void default_target_option_override (void);
912f2dac 145extern void hook_void_bitmap (bitmap);
9b580a0b 146extern int default_reloc_rw_mask (void);
5234b8f5 147extern tree default_mangle_decl_assembler_name (tree, tree);
feb60f03
NS
148extern tree default_emutls_var_fields (tree, tree *);
149extern tree default_emutls_var_init (tree, tree, tree);
dbc42c44 150extern bool default_hard_regno_scratch_ok (unsigned int);
5bfed9a9 151extern bool default_mode_dependent_address_p (const_rtx, addr_space_t);
ab442df7 152extern bool default_target_option_valid_attribute_p (tree, tree, tree, int);
5779e713 153extern bool default_target_option_pragma_parse (tree, tree);
5cec9f59 154extern bool default_target_can_inline_p (tree, tree);
d4ebfa65 155extern bool default_valid_pointer_mode (enum machine_mode);
84562394 156extern bool default_ref_may_alias_errno (struct ao_ref *);
d4ebfa65
BE
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);
09e881c9
BE
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);
e6ff3083 167extern unsigned int default_case_values_threshold (void);
2929029c 168extern bool default_have_conditional_execution (void);
0a35513e 169
d33d9e47
AI
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
0a35513e
AH
174extern tree default_builtin_tm_load_store (tree);
175
a87cf97e
JR
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);
de8f4b07 179
3c5273a9 180extern bool default_profile_before_prologue (void);
fba42e24 181extern reg_class_t default_preferred_reload_class (rtx, reg_class_t);
abd26bfb 182extern reg_class_t default_preferred_output_reload_class (rtx, reg_class_t);
5f286f4a 183extern reg_class_t default_preferred_rename_class (reg_class_t rclass);
07b8f0a8 184extern bool default_class_likely_spilled_p (reg_class_t);
a8c44c52 185extern unsigned char default_class_max_nregs (reg_class_t, enum machine_mode);
f0a0390e
RH
186
187extern enum unwind_info_type default_debug_unwind_info (void);
ad0c4c36 188
f236ac95 189extern void default_canonicalize_comparison (int *, rtx *, rtx *, bool);
c354951b 190
ad0c4c36
DD
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);
f16d3f39
JH
195extern section * default_function_section(tree decl, enum node_frequency freq,
196 bool startup, bool exit);
c3284718 197extern enum machine_mode default_get_reg_raw_mode (int);
d56a43a0 198extern bool default_keep_leaf_when_profiled ();
ffa88471 199
a803773f
JM
200extern void *default_get_pch_validity (size_t *);
201extern const char *default_pch_valid_p (const void *, size_t);
a8781821
SB
202
203extern void default_asm_output_ident_directive (const char*);
204
42e37616 205extern enum machine_mode default_cstore_mode (enum insn_code);
d9886a9e 206extern bool default_member_type_forces_blk (const_tree, enum machine_mode);
267bac10 207extern void default_atomic_assign_expand_fenv (tree *, tree *, tree *);
4a7cb16f
AM
208extern tree build_va_arg_indirect_ref (tree);
209extern tree std_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *);
807e902e
KZ
210extern bool can_use_doloop_if_innermost (const widest_int &,
211 const widest_int &,
1d0216c8 212 unsigned int, bool);