Functions |
bool | default_legitimate_address_p (enum machine_mode, rtx, bool) |
void | default_external_libcall (rtx) |
rtx | default_legitimize_address (rtx, rtx, enum machine_mode) |
int | default_unspec_may_trap_p (const_rtx, unsigned) |
enum machine_mode | default_promote_function_mode (const_tree, enum machine_mode, int *, const_tree, int) |
enum machine_mode | default_promote_function_mode_always_promote (const_tree, enum machine_mode, int *, const_tree, int) |
enum machine_mode | default_cc_modes_compatible (enum machine_mode, enum machine_mode) |
bool | default_return_in_memory (const_tree, const_tree) |
rtx | default_expand_builtin_saveregs (void) |
void | default_setup_incoming_varargs (cumulative_args_t, enum machine_mode, tree, int *, int) |
rtx | default_builtin_setjmp_frame_value (void) |
bool | default_pretend_outgoing_varargs_named (cumulative_args_t) |
enum machine_mode | default_eh_return_filter_mode (void) |
enum machine_mode | default_libgcc_cmp_return_mode (void) |
enum machine_mode | default_libgcc_shift_count_mode (void) |
enum machine_mode | default_unwind_word_mode (void) |
unsigned HOST_WIDE_INT | default_shift_truncation_mask (enum machine_mode) |
unsigned int | default_min_divisions_for_recip_mul (enum machine_mode) |
int | default_mode_rep_extended (enum machine_mode, enum machine_mode) |
tree | default_stack_protect_guard (void) |
tree | default_external_stack_protect_fail (void) |
tree | default_hidden_stack_protect_fail (void) |
enum machine_mode | default_mode_for_suffix (char) |
tree | default_cxx_guard_type (void) |
tree | default_cxx_get_cookie_size (tree) |
bool | hook_pass_by_reference_must_pass_in_stack (cumulative_args_t, enum machine_mode mode, const_tree, bool) |
bool | hook_callee_copies_named (cumulative_args_t ca, enum machine_mode, const_tree, bool) |
void | default_print_operand (FILE *, rtx, int) |
void | default_print_operand_address (FILE *, rtx) |
bool | default_print_operand_punct_valid_p (unsigned char) |
tree | default_mangle_assembler_name (const char *) |
bool | default_scalar_mode_supported_p (enum machine_mode) |
bool | targhook_words_big_endian (void) |
bool | targhook_float_words_big_endian (void) |
bool | default_decimal_float_supported_p (void) |
bool | default_fixed_point_supported_p (void) |
bool | default_has_ifunc_p (void) |
const char * | default_invalid_within_doloop (const_rtx) |
tree | default_builtin_vectorized_function (tree, tree, tree) |
tree | default_builtin_vectorized_conversion (unsigned int, tree, tree) |
int | default_builtin_vectorization_cost (enum vect_cost_for_stmt, tree, int) |
tree | default_builtin_reciprocal (unsigned int, bool, bool) |
HOST_WIDE_INT | default_vector_alignment (const_tree) |
bool | default_builtin_vector_alignment_reachable (const_tree, bool) |
bool | default_builtin_support_vector_misalignment (enum machine_mode mode, const_tree, int, bool) |
enum machine_mode | default_preferred_simd_mode (enum machine_mode mode) |
unsigned int | default_autovectorize_vector_sizes (void) |
void * | default_init_cost (struct loop *) |
unsigned | default_add_stmt_cost (void *, int, enum vect_cost_for_stmt, struct _stmt_vec_info *, int, enum vect_cost_model_location) |
void | default_finish_cost (void *, unsigned *, unsigned *, unsigned *) |
void | default_destroy_cost_data (void *) |
bool | hook_bool_CUMULATIVE_ARGS_false (cumulative_args_t) |
bool | hook_bool_CUMULATIVE_ARGS_true (cumulative_args_t) |
bool | hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false (cumulative_args_t, enum machine_mode, const_tree, bool) |
bool | hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true (cumulative_args_t, enum machine_mode, const_tree, bool) |
int | hook_int_CUMULATIVE_ARGS_mode_tree_bool_0 (cumulative_args_t, enum machine_mode, tree, bool) |
const char * | hook_invalid_arg_for_unprototyped_fn (const_tree, const_tree, const_tree) |
void | default_function_arg_advance (cumulative_args_t, enum machine_mode, const_tree, bool) |
rtx | default_function_arg (cumulative_args_t, enum machine_mode, const_tree, bool) |
rtx | default_function_incoming_arg (cumulative_args_t, enum machine_mode, const_tree, bool) |
unsigned int | default_function_arg_boundary (enum machine_mode, const_tree) |
unsigned int | default_function_arg_round_boundary (enum machine_mode, const_tree) |
bool | hook_bool_const_rtx_commutative_p (const_rtx, int) |
rtx | default_function_value (const_tree, const_tree, bool) |
rtx | default_libcall_value (enum machine_mode, const_rtx) |
bool | default_function_value_regno_p (const unsigned int) |
rtx | default_internal_arg_pointer (void) |
rtx | default_static_chain (const_tree, bool) |
void | default_trampoline_init (rtx, tree, rtx) |
int | default_return_pops_args (tree, tree, int) |
reg_class_t | default_branch_target_register_class (void) |
bool | default_lra_p (void) |
int | default_register_priority (int) |
bool | default_register_usage_leveling_p (void) |
bool | default_different_addr_displacement_p (void) |
reg_class_t | default_secondary_reload (bool, rtx, reg_class_t, enum machine_mode, secondary_reload_info *) |
void | default_target_option_override (void) |
void | hook_void_bitmap (bitmap) |
int | default_reloc_rw_mask (void) |
tree | default_mangle_decl_assembler_name (tree, tree) |
tree | default_emutls_var_fields (tree, tree *) |
tree | default_emutls_var_init (tree, tree, tree) |
bool | default_hard_regno_scratch_ok (unsigned int) |
bool | default_mode_dependent_address_p (const_rtx, addr_space_t) |
bool | default_target_option_valid_attribute_p (tree, tree, tree, int) |
bool | default_target_option_pragma_parse (tree, tree) |
bool | default_target_can_inline_p (tree, tree) |
bool | default_valid_pointer_mode (enum machine_mode) |
bool | default_ref_may_alias_errno (struct ao_ref_s *) |
enum machine_mode | default_addr_space_pointer_mode (addr_space_t) |
enum machine_mode | default_addr_space_address_mode (addr_space_t) |
bool | default_addr_space_valid_pointer_mode (enum machine_mode, addr_space_t) |
bool | default_addr_space_legitimate_address_p (enum machine_mode, rtx, bool, addr_space_t) |
rtx | default_addr_space_legitimize_address (rtx, rtx, enum machine_mode, addr_space_t) |
bool | default_addr_space_subset_p (addr_space_t, addr_space_t) |
rtx | default_addr_space_convert (rtx, tree, tree) |
unsigned int | default_case_values_threshold (void) |
bool | default_have_conditional_execution (void) |
bool | default_libc_has_function (enum function_class) |
bool | no_c99_libc_has_function (enum function_class) |
bool | gnu_libc_has_function (enum function_class) |
tree | default_builtin_tm_load_store (tree) |
int | default_memory_move_cost (enum machine_mode, reg_class_t, bool) |
int | default_register_move_cost (enum machine_mode, reg_class_t, reg_class_t) |
bool | default_profile_before_prologue (void) |
reg_class_t | default_preferred_reload_class (rtx, reg_class_t) |
reg_class_t | default_preferred_output_reload_class (rtx, reg_class_t) |
reg_class_t | default_preferred_rename_class (reg_class_t rclass) |
bool | default_class_likely_spilled_p (reg_class_t) |
unsigned char | default_class_max_nregs (reg_class_t, enum machine_mode) |
enum unwind_info_type | default_debug_unwind_info (void) |
void | default_canonicalize_comparison (int *, rtx *, rtx *, bool) |
int | default_label_align_after_barrier_max_skip (rtx) |
int | default_loop_align_max_skip (rtx) |
int | default_label_align_max_skip (rtx) |
int | default_jump_align_max_skip (rtx) |
section * | default_function_section (tree decl, enum node_frequency freq, bool startup, bool exit) |
enum machine_mode | default_get_reg_raw_mode (int) |
void * | default_get_pch_validity (size_t *) |
const char * | default_pch_valid_p (const void *, size_t) |
void | default_asm_output_ident_directive (const char *) |
enum machine_mode | default_cstore_mode (enum insn_code) |
bool | default_member_type_forces_blk (const_tree, enum machine_mode) |
tree | build_va_arg_indirect_ref (tree) |
tree | std_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *) |
rtx | default_load_bounds_for_arg (rtx, rtx, rtx) |
void | default_store_bounds_for_arg (rtx, rtx, rtx, rtx) |
tree | default_fn_abi_va_list_bounds_size (tree) |
tree | default_chkp_bound_type (void) |
enum machine_mode | default_chkp_bound_mode (void) |
tree | default_builtin_chkp_function (unsigned int) |
bool default_legitimate_address_p |
( |
enum machine_mode |
mode, |
|
|
rtx |
addr, |
|
|
bool |
strict |
|
) |
| |
@verbatim
Default target hook functions. Copyright (C) 2003-2013 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/.
@verbatim
Default target hook functions. Copyright (C) 2003-2013 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/.
The migration of target macros to target hooks works as follows:
1. Create a target hook that uses the existing target macros to
implement the same functionality.
2. Convert all the MI files to use the hook instead of the macro.
3. Repeat for a majority of the remaining target macros. This will
take some time.
4. Tell target maintainers to start migrating.
5. Eventually convert the backends to override the hook instead of
defining the macros. This will take some time too.
6. TBD when, poison the macros. Unmigrated targets will break at
this point.
Note that we expect steps 1-3 to be done by the people that
understand what the MI does with each macro, and step 5 to be done
by the target maintainers for their respective targets.
Note that steps 1 and 2 don't have to be done together, but no
target can override the new hook until step 2 is complete for it.
Once the macros are poisoned, we will revert to the old migration
rules - migrate the macro, callers, and targets all at once. This
comment can thus be removed at that point.
Defer to the old implementation using a goto.
The "standard" implementation of va_arg: read the value from the
current (padded) address and increment by the (padded) size.
All of the alignment and movement below is for args-grow-up machines.
As of 2004, there are only 3 ARGS_GROW_DOWNWARD targets, and they all
implement their own specialized gimplify_va_arg_expr routines.
When we align parameter on stack for caller, if the parameter
alignment is beyond MAX_SUPPORTED_STACK_ALIGNMENT, it will be
aligned at MAX_SUPPORTED_STACK_ALIGNMENT. We will match callee
here with caller.
Hoist the valist value into a temporary for the moment.
va_list pointer is aligned to PARM_BOUNDARY. If argument actually
requires greater alignment, we must perform dynamic alignment.
If the actual alignment is less than the alignment of the type,
adjust the type accordingly so that we don't assume strict alignment
when dereferencing the pointer.
Compute the rounded size of the type.
Reduce rounded_size so it's sharable with the postqueue.
Get AP.
Small args are padded downward.
Compute new value for AP.