GCC Middle and Back End API Reference
targhooks.c File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "machmode.h"
#include "rtl.h"
#include "tree.h"
#include "expr.h"
#include "output.h"
#include "diagnostic-core.h"
#include "function.h"
#include "target.h"
#include "tm_p.h"
#include "target-def.h"
#include "ggc.h"
#include "hard-reg-set.h"
#include "regs.h"
#include "reload.h"
#include "optabs.h"
#include "recog.h"
#include "intl.h"
#include "opts.h"
#include "gimple.h"
#include "tree-ssanames.h"
#include "tree-ssa-alias.h"
#include "insn-codes.h"
#include "gt-targhooks.h"
Include dependency graph for targhooks.c:

Macros

#define HAVE_casesi   0
#define PAD_VARARGS_DOWN   BYTES_BIG_ENDIAN

Functions

bool default_legitimate_address_p (enum machine_mode mode, rtx addr, bool strict)
void default_external_libcall ()
int default_unspec_may_trap_p ()
enum machine_mode default_promote_function_mode (const_tree type, enum machine_mode mode, int *punsignedp, const_tree funtype, int for_return)
enum machine_mode default_promote_function_mode_always_promote (const_tree type, enum machine_mode mode, int *punsignedp, const_tree funtype, int for_return)
enum machine_mode default_cc_modes_compatible ()
bool default_return_in_memory (const_tree type, const_tree fntype)
rtx default_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
rtx default_expand_builtin_saveregs ()
void default_setup_incoming_varargs (cumulative_args_t ca, enum machine_mode mode, tree type, int *pretend_arg_size, int second_time)
rtx default_builtin_setjmp_frame_value ()
bool hook_bool_CUMULATIVE_ARGS_false ()
bool default_pretend_outgoing_varargs_named ()
enum machine_mode default_eh_return_filter_mode ()
enum machine_mode default_libgcc_cmp_return_mode ()
enum machine_mode default_libgcc_shift_count_mode ()
enum machine_mode default_unwind_word_mode ()
unsigned HOST_WIDE_INT default_shift_truncation_mask ()
unsigned int default_min_divisions_for_recip_mul ()
int default_mode_rep_extended (enum machine_mode mode, enum machine_mode mode_rep)
bool hook_bool_CUMULATIVE_ARGS_true ()
enum machine_mode default_mode_for_suffix ()
tree default_cxx_guard_type ()
tree default_cxx_get_cookie_size ()
bool hook_pass_by_reference_must_pass_in_stack (cumulative_args_t c, enum machine_mode mode, const_tree type, bool named_arg)
bool hook_callee_copies_named (cumulative_args_t ca, enum machine_mode mode, const_tree type, bool named)
void default_print_operand (FILE *stream, rtx x, int code)
void default_print_operand_address (FILE *stream, rtx x)
bool default_print_operand_punct_valid_p ()
tree default_mangle_assembler_name ()
bool default_scalar_mode_supported_p ()
bool targhook_words_big_endian ()
bool targhook_float_words_big_endian ()
bool default_decimal_float_supported_p ()
bool default_fixed_point_supported_p ()
bool default_has_ifunc_p ()
const char * default_invalid_within_doloop ()
tree default_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
tree default_builtin_vectorized_conversion (unsigned int code, tree dest_type, tree src_type)
int default_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, tree vectype, int misalign)
tree default_builtin_reciprocal (unsigned int fn, bool md_fn, bool sqrt)
bool hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false (cumulative_args_t ca, enum machine_mode mode, const_tree type, bool named)
bool hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true (cumulative_args_t ca, enum machine_mode mode, const_tree type, bool named)
int hook_int_CUMULATIVE_ARGS_mode_tree_bool_0 (cumulative_args_t ca, enum machine_mode mode, tree type, bool named)
void default_function_arg_advance (cumulative_args_t ca, enum machine_mode mode, const_tree type, bool named)
rtx default_function_arg (cumulative_args_t ca, enum machine_mode mode, const_tree type, bool named)
rtx default_function_incoming_arg (cumulative_args_t ca, enum machine_mode mode, const_tree type, bool named)
unsigned int default_function_arg_boundary (enum machine_mode mode, const_tree type)
unsigned int default_function_arg_round_boundary (enum machine_mode mode, const_tree type)
void hook_void_bitmap ()
const char * hook_invalid_arg_for_unprototyped_fn (const_tree typelist, const_tree funcdecl, const_tree val)
tree default_stack_protect_guard ()
tree default_external_stack_protect_fail ()
tree default_hidden_stack_protect_fail ()
bool hook_bool_const_rtx_commutative_p (const_rtx x, int outer_code)
rtx default_function_value (const_tree ret_type, const_tree fn_decl_or_type, bool outgoing)
rtx default_libcall_value (enum machine_mode mode, const_rtx fun)
bool default_function_value_regno_p ()
rtx default_internal_arg_pointer ()
rtx default_static_chain ()
void default_trampoline_init (rtx ARG_UNUSED(m_tramp), tree ARG_UNUSED(t_func), rtx ARG_UNUSED(r_chain))
int default_return_pops_args (tree fundecl, tree funtype, int size)
reg_class_t default_branch_target_register_class ()
bool default_lra_p ()
int default_register_priority ()
bool default_register_usage_leveling_p ()
bool default_different_addr_displacement_p ()
reg_class_t default_secondary_reload (bool in_p, rtx x, reg_class_t reload_class_i, enum machine_mode reload_mode, secondary_reload_info *sri)
int default_reloc_rw_mask ()
tree default_mangle_decl_assembler_name (tree decl, tree id)
HOST_WIDE_INT default_vector_alignment ()
bool default_builtin_vector_alignment_reachable ()
bool default_builtin_support_vector_misalignment (enum machine_mode mode, const_tree type, int misalignment, bool is_packed)
enum machine_mode default_preferred_simd_mode ()
unsigned int default_autovectorize_vector_sizes ()
void * default_init_cost ()
unsigned default_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind, struct _stmt_vec_info *stmt_info, int misalign, enum vect_cost_model_location where)
void default_finish_cost (void *data, unsigned *prologue_cost, unsigned *body_cost, unsigned *epilogue_cost)
void default_destroy_cost_data ()
bool default_valid_pointer_mode ()
bool default_ref_may_alias_errno ()
enum machine_mode default_addr_space_pointer_mode ()
enum machine_mode default_addr_space_address_mode ()
bool default_addr_space_valid_pointer_mode ()
bool target_default_pointer_address_modes_p ()
bool default_addr_space_legitimate_address_p (enum machine_mode mode, rtx mem, bool strict, addr_space_t as)
rtx default_addr_space_legitimize_address (rtx x, rtx oldx, enum machine_mode mode, addr_space_t as)
bool default_addr_space_subset_p ()
rtx default_addr_space_convert (rtx op, tree from_type, tree to_type)
bool default_hard_regno_scratch_ok ()
bool default_mode_dependent_address_p (const_rtx addr, addr_space_t addrspace)
bool default_target_option_valid_attribute_p (tree ARG_UNUSED(fndecl), tree ARG_UNUSED(name), tree ARG_UNUSED(args), int ARG_UNUSED(flags))
bool default_target_option_pragma_parse (tree ARG_UNUSED(args), tree ARG_UNUSED(pop_target))
bool default_target_can_inline_p ()
unsigned int default_case_values_threshold ()
bool default_have_conditional_execution ()
tree default_builtin_tm_load_store (tree ARG_UNUSED(type))
int default_memory_move_cost (enum machine_mode mode, reg_class_t rclass, bool in)
int default_register_move_cost (enum machine_mode mode, reg_class_t from, reg_class_t to)
bool default_profile_before_prologue ()
reg_class_t default_preferred_reload_class (rtx x, reg_class_t rclass)
reg_class_t default_preferred_output_reload_class (rtx x, reg_class_t rclass)
reg_class_t default_preferred_rename_class ()
bool default_class_likely_spilled_p ()
unsigned char default_class_max_nregs (reg_class_t rclass, enum machine_mode mode)
enum unwind_info_type default_debug_unwind_info ()
enum machine_mode default_get_reg_raw_mode ()
static bool option_affects_pch_p ()
void * default_get_pch_validity ()
static const char * pch_option_mismatch ()
const char * default_pch_valid_p ()
enum machine_mode default_cstore_mode ()
bool default_member_type_forces_blk ()
rtx default_load_bounds_for_arg (rtx addr, rtx ptr, rtx bnd)
void default_store_bounds_for_arg (rtx val, rtx addr, rtx bounds, rtx to)
tree default_fn_abi_va_list_bounds_size ()
void default_canonicalize_comparison ()
tree build_va_arg_indirect_ref ()
tree std_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p, gimple_seq *post_p)
tree default_chkp_bound_type ()
enum machine_mode default_chkp_bound_mode ()
tree default_builtin_chkp_function ()

Variables

static tree stack_chk_guard_decl
static tree stack_chk_fail_decl

Macro Definition Documentation

#define HAVE_casesi   0
#define PAD_VARARGS_DOWN   BYTES_BIG_ENDIAN

Function Documentation

tree build_va_arg_indirect_ref ( )

Build an indirect-ref expression over the given TREE, which represents a piece of a va_arg() expansion.

unsigned default_add_stmt_cost ( void *  data,
int  count,
enum vect_cost_for_stmt  kind,
struct _stmt_vec_info stmt_info,
int  misalign,
enum vect_cost_model_location  where 
)

By default, the cost model looks up the cost of the given statement kind and mode, multiplies it by the occurrence count, accumulates it into the cost specified by WHERE, and returns the cost added.

Statements in an inner loop relative to the loop being vectorized are weighted more heavily. The value here is arbitrary and could potentially be improved with analysis.

enum machine_mode default_addr_space_address_mode ( )

Return the mode for an address in a given ADDRSPACE, defaulting to Pmode for the generic address space only.

rtx default_addr_space_convert ( rtx  op,
tree  from_type,
tree  to_type 
)

The default hook for TARGET_ADDR_SPACE_CONVERT. This hook should never be called for targets with only a generic address space.

bool default_addr_space_legitimate_address_p ( enum machine_mode  mode,
rtx  mem,
bool  strict,
addr_space_t  as 
)

Named address space version of legitimate_address_p.

References warning().

rtx default_addr_space_legitimize_address ( rtx  x,
rtx  oldx,
enum machine_mode  mode,
addr_space_t  as 
)

Named address space version of LEGITIMIZE_ADDRESS.

enum machine_mode default_addr_space_pointer_mode ( )

Return the mode for a pointer to a given ADDRSPACE, defaulting to ptr_mode for the generic address space only.

References ADDR_SPACE_GENERIC_P, and targetm.

bool default_addr_space_subset_p ( )

The default hook for determining if one named address space is a subset of another and to return which address space to use as the common address space.

bool default_addr_space_valid_pointer_mode ( )

Named address space version of valid_pointer_mode.

References gcc_unreachable.

unsigned int default_autovectorize_vector_sizes ( void  )

By default only the size derived from the preferred vector mode is tried.

References vect_body, vect_epilogue, and vect_prologue.

reg_class_t default_branch_target_register_class ( void  )
tree default_builtin_chkp_function ( )
tree default_builtin_reciprocal ( unsigned int  fn,
bool  md_fn,
bool  sqrt 
)

Reciprocal.

rtx default_builtin_setjmp_frame_value ( void  )

The default implementation of TARGET_BUILTIN_SETJMP_FRAME_VALUE.

bool default_builtin_support_vector_misalignment ( enum machine_mode  mode,
const_tree  type,
int  misalignment,
bool  is_packed 
)

By default, assume that a target supports any factor of misalignment memory access if it supports movmisalign patten. is_packed is true if the memory access is defined in a packed struct.

References default_builtin_vectorization_cost(), NULL_TREE, stmt_cost(), stmt_in_inner_loop_p(), stmt_vectype(), and vect_body.

tree default_builtin_tm_load_store ( tree   ARG_UNUSEDtype)
bool default_builtin_vector_alignment_reachable ( )

Assuming that types whose size is > pointer-size are not guaranteed to be naturally aligned.

 Assuming that types whose size is <= pointer-size
 are naturally aligned.   
int default_builtin_vectorization_cost ( enum vect_cost_for_stmt  type_of_cost,
tree  vectype,
int  misalign 
)

Default vectorizer cost model values.

Referenced by default_builtin_support_vector_misalignment().

tree default_builtin_vectorized_conversion ( unsigned int  code,
tree  dest_type,
tree  src_type 
)

Vectorized conversion.

tree default_builtin_vectorized_function ( tree  fndecl,
tree  type_out,
tree  type_in 
)

Mapping of builtin functions to vectorized variants.

References cond_branch_not_taken, scalar_load, scalar_stmt, scalar_store, scalar_to_vec, vec_perm, vec_to_scalar, vector_load, vector_stmt, and vector_store.

void default_canonicalize_comparison ( )

Default version of canonicalize_comparison.

unsigned int default_case_values_threshold ( void  )

If the machine does not have a case insn that compares the bounds, this means extra overhead for dispatch tables, which raises the threshold for using them.

enum machine_mode default_cc_modes_compatible ( )
enum machine_mode default_chkp_bound_mode ( void  )
tree default_chkp_bound_type ( void  )
bool default_class_likely_spilled_p ( )

The default implementation of TARGET_CLASS_LIKELY_SPILLED_P.

References cl_options_count, and targetm.

unsigned char default_class_max_nregs ( reg_class_t  rclass,
enum machine_mode  mode 
)

The default implementation of TARGET_CLASS_MAX_NREGS.

References target_flags, and targetm.

enum machine_mode default_cstore_mode ( )

Default version of cstore_mode.

tree default_cxx_get_cookie_size ( )

Returns the size of the cookie to use when allocating an array whose elements have the indicated TYPE. Assumes that it is already known that a cookie is needed.

We need to allocate an additional max (sizeof (size_t), alignof (true_type)) bytes.

tree default_cxx_guard_type ( void  )

The generic C++ ABI specifies this is a 64-bit value.

References INT_CST_LT_UNSIGNED, size_in_bytes(), size_int, sizetype, and TYPE_ALIGN_UNIT.

enum unwind_info_type default_debug_unwind_info ( void  )

Determine the debugging unwind mechanism for the target.

 If the target wants to force the use of dwarf2 unwind info, let it.   
 ??? Change all users to the hook, then poison this.   
 Otherwise, only turn it on if dwarf2 debugging is enabled.   
bool default_decimal_float_supported_p ( void  )

True if the target supports decimal floating point.

void default_destroy_cost_data ( )

Free the cost data.

References ADDR_SPACE_GENERIC_P, and gcc_assert.

bool default_different_addr_displacement_p ( void  )

References gcc_assert, insn_data, and n_operands.

enum machine_mode default_eh_return_filter_mode ( void  )

References word_mode.

rtx default_expand_builtin_saveregs ( void  )
void default_external_libcall ( )
tree default_external_stack_protect_fail ( void  )
void default_finish_cost ( void *  data,
unsigned *  prologue_cost,
unsigned *  body_cost,
unsigned *  epilogue_cost 
)

By default, the cost model just returns the accumulated costs.

bool default_fixed_point_supported_p ( void  )

True if the target supports fixed-point arithmetic.

References CALL_P, computed_jump_p(), NULL, and tablejump_p().

tree default_fn_abi_va_list_bounds_size ( )
rtx default_function_arg ( cumulative_args_t  ca,
enum machine_mode  mode,
const_tree  type,
bool  named 
)
void default_function_arg_advance ( cumulative_args_t  ca,
enum machine_mode  mode,
const_tree  type,
bool  named 
)
unsigned int default_function_arg_boundary ( enum machine_mode  mode,
const_tree  type 
)

References stack_chk_guard_decl.

unsigned int default_function_arg_round_boundary ( enum machine_mode  mode,
const_tree  type 
)
rtx default_function_incoming_arg ( cumulative_args_t  ca,
enum machine_mode  mode,
const_tree  type,
bool  named 
)

References NULL.

rtx default_function_value ( const_tree  ret_type,
const_tree  fn_decl_or_type,
bool  outgoing 
)

The old interface doesn't handle receiving the function type.

bool default_function_value_regno_p ( )

The default hook for TARGET_FUNCTION_VALUE_REGNO_P.

void* default_get_pch_validity ( )

Default version of get_pch_validity. By default, every flag difference is fatal; that will be mostly right for most targets, but completely right for very few.

enum machine_mode default_get_reg_raw_mode ( )

To be used by targets where reg_raw_mode doesn't return the right mode for registers used in apply_builtin_return and apply_builtin_arg.

References targetm.

bool default_hard_regno_scratch_ok ( )
bool default_has_ifunc_p ( void  )

True if the target supports GNU indirect functions.

bool default_have_conditional_execution ( void  )
tree default_hidden_stack_protect_fail ( void  )

References COMMUTATIVE_P.

void* default_init_cost ( )

By default, the cost model accumulates three separate costs (prologue, loop body, and epilogue) for a vectorized loop or block. So allocate an array of three unsigned ints, set it to zero, and return its address.

rtx default_internal_arg_pointer ( void  )

If the reg that the virtual arg pointer will be translated into is not a fixed reg or is the stack pointer, make a copy of the virtual arg pointer, and address parms via the copy. The frame pointer is considered fixed even though it is not marked as such.

const char* default_invalid_within_doloop ( )

NULL if INSN insn is valid within a low-overhead loop, otherwise returns an error message.

This function checks whether a given INSN is valid within a low-overhead loop. If INSN is invalid it returns the reason for that, otherwise it returns NULL. A called function may clobber any special registers required for low-overhead looping. Additionally, some targets (eg, PPC) use the count register for branch on table instructions. We reject the doloop pattern in these cases.

References NULL_TREE.

bool default_legitimate_address_p ( enum machine_mode  mode,
rtx  addr,
bool  strict 
)

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.
  1. Convert all the MI files to use the hook instead of the macro.
  1. Repeat for a majority of the remaining target macros. This will take some time.
  1. Tell target maintainers to start migrating.
  1. Eventually convert the backends to override the hook instead of defining the macros. This will take some time too.
  1. 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.

References gcc_unreachable, memory_address_p, and strict_memory_address_p.

rtx default_legitimize_address ( rtx  x,
rtx  orig_x,
enum machine_mode  mode 
)
rtx default_libcall_value ( enum machine_mode  mode,
const_rtx  fun 
)
enum machine_mode default_libgcc_cmp_return_mode ( void  )

References word_mode.

enum machine_mode default_libgcc_shift_count_mode ( void  )

References word_mode.

rtx default_load_bounds_for_arg ( rtx  addr,
rtx  ptr,
rtx  bnd 
)
bool default_lra_p ( void  )
tree default_mangle_assembler_name ( )

The default implementation of TARGET_MANGLE_ASSEMBLER_NAME.

References BITS_PER_WORD, CHAR_TYPE_SIZE, GET_MODE_CLASS, GET_MODE_PRECISION, INT_TYPE_SIZE, LONG_LONG_TYPE_SIZE, LONG_TYPE_SIZE, and SHORT_TYPE_SIZE.

tree default_mangle_decl_assembler_name ( tree  decl,
tree  id 
)

By default, do no modification.

References optab_handler().

bool default_member_type_forces_blk ( )

Default version of member_type_forces_blk.

References build2, fold_build_pointer_plus_hwi, gimplify_and_add(), and TREE_TYPE.

int default_memory_move_cost ( enum machine_mode  mode,
reg_class_t  rclass,
bool  in 
)

Compute cost of moving registers to/from memory.

References reg_class_size.

unsigned int default_min_divisions_for_recip_mul ( )

The default implementation of TARGET_MIN_DIVISIONS_FOR_RECIP_MUL.

bool default_mode_dependent_address_p ( const_rtx  addr,
addr_space_t  addrspace 
)

The default implementation of TARGET_MODE_DEPENDENT_ADDRESS_P.

References HAVE_casesi.

enum machine_mode default_mode_for_suffix ( )

Return machine mode for non-standard suffix or VOIDmode if non-standard suffixes are unsupported.

int default_mode_rep_extended ( enum machine_mode  mode,
enum machine_mode  mode_rep 
)

The default implementation of TARGET_MODE_REP_EXTENDED.

const char* default_pch_valid_p ( )

Default version of pch_valid_p.

-fpic and -fpie also usually make a PCH invalid.

 Check target_flags.   

References build_simple_mem_ref_loc(), and EXPR_LOCATION.

reg_class_t default_preferred_output_reload_class ( rtx  x,
reg_class_t  rclass 
)

The default implementation of TARGET_OUTPUT_PREFERRED_RELOAD_CLASS.

References targetm.

reg_class_t default_preferred_reload_class ( rtx  x,
reg_class_t  rclass 
)

The default implementation of TARGET_PREFERRED_RELOAD_CLASS.

References reg_raw_mode.

reg_class_t default_preferred_rename_class ( )

The default implementation of TARGET_PREFERRED_RENAME_CLASS.

enum machine_mode default_preferred_simd_mode ( )

By default, only attempt to parallelize bitwise operations, and possibly adds/subtracts using bit-twiddling.

bool default_pretend_outgoing_varargs_named ( )

References targetm.

void default_print_operand ( FILE *  stream,
rtx  x,
int  code 
)

Emit to STREAM the assembler syntax for insn operand X.

void default_print_operand_address ( FILE *  stream,
rtx  x 
)

Emit to STREAM the assembler syntax for an insn operand whose memory address is X.

bool default_print_operand_punct_valid_p ( )

Return true if CODE is a valid punctuation character for the `print_operand' hook.

bool default_profile_before_prologue ( void  )
enum machine_mode default_promote_function_mode ( const_tree  type,
enum machine_mode  mode,
int *  punsignedp,
const_tree  funtype,
int  for_return 
)

References NULL_TREE, and promote_mode().

enum machine_mode default_promote_function_mode_always_promote ( const_tree  type,
enum machine_mode  mode,
int *  punsignedp,
const_tree  funtype,
int  for_return 
)

References promote_mode().

bool default_ref_may_alias_errno ( )

Determine whether the memory reference specified by REF may alias the C libraries errno location.

The default implementation assumes the errno location is a declaration of type int or is always accessed via a pointer to int. We assume that accesses to errno are not deliberately obfuscated (even in conforming ways).

 The default implementation assumes an errno location
 declaration is never defined in the current compilation unit.   

References targetm.

int default_register_move_cost ( enum machine_mode  mode,
reg_class_t  from,
reg_class_t  to 
)

Compute cost of moving data from a register of class FROM to one of TO, using MODE.

References UI_DWARF2.

int default_register_priority ( )
bool default_register_usage_leveling_p ( void  )
int default_reloc_rw_mask ( void  )

By default, if flag_pic is true, then neither local nor global relocs should be placed in readonly memory.

bool default_return_in_memory ( const_tree  type,
const_tree  fntype 
)
int default_return_pops_args ( tree  fundecl,
tree  funtype,
int  size 
)
bool default_scalar_mode_supported_p ( )

True if MODE is valid for the target. By "valid", we mean able to be manipulated in non-trivial ways. In particular, this means all the arithmetic is supported.

By default we guess this means that any C type is supported. If we can't map the mode back to a type that would be available in C, then reject it. Special case, here, is the double-word arithmetic supported by optabs.c.

reg_class_t default_secondary_reload ( bool  in_p,
rtx  x,
reg_class_t  reload_class_i,
enum machine_mode  reload_mode,
secondary_reload_info sri 
)

The scratch register's constraint must start with "=&", except for an input reload, where only "=" is necessary, and where it might be beneficial to re-use registers from the input.

References gcc_assert, and insn_data.

void default_setup_incoming_varargs ( cumulative_args_t  ca,
enum machine_mode  mode,
tree  type,
int *  pretend_arg_size,
int  second_time 
)
unsigned HOST_WIDE_INT default_shift_truncation_mask ( )

The default implementation of TARGET_SHIFT_TRUNCATION_MASK.

References have_insn_for().

rtx default_static_chain ( )

It really doesn't matter what we return here, so long at it doesn't cause the rest of the compiler to crash.

void default_store_bounds_for_arg ( rtx  val,
rtx  addr,
rtx  bounds,
rtx  to 
)
bool default_target_can_inline_p ( )
 If callee has no option attributes, then it is ok to inline  
 If caller has no option attributes, but callee does then it is not ok to
 inline  
 If both caller and callee have attributes, assume that if the
 pointer is different, the two functions have different target
 options since build_target_option_node uses a hash table for the
 options.   
bool default_target_option_pragma_parse ( tree   ARG_UNUSEDargs,
tree   ARG_UNUSEDpop_target 
)
bool default_target_option_valid_attribute_p ( tree   ARG_UNUSEDfndecl,
tree   ARG_UNUSEDname,
tree   ARG_UNUSEDargs,
int   ARG_UNUSEDflags 
)
void default_trampoline_init ( rtx   ARG_UNUSEDm_tramp,
tree   ARG_UNUSEDt_func,
rtx   ARG_UNUSEDr_chain 
)
int default_unspec_may_trap_p ( )

Any floating arithmetic may trap.

enum machine_mode default_unwind_word_mode ( void  )
bool default_valid_pointer_mode ( )

Determine whether or not a pointer mode is valid. Assume defaults of ptr_mode or Pmode - can be overridden.

References ADDR_SPACE_GENERIC_P, and targetm.

HOST_WIDE_INT default_vector_alignment ( )

Default to natural alignment for vector types.

References word_mode.

bool hook_bool_const_rtx_commutative_p ( const_rtx  x,
int  outer_code 
)
bool hook_bool_CUMULATIVE_ARGS_false ( )

Generic hook that takes a CUMULATIVE_ARGS pointer and returns false.

References default_setup_incoming_varargs(), and targetm.

bool hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false ( cumulative_args_t  ca,
enum machine_mode  mode,
const_tree  type,
bool  named 
)

References gcc_unreachable.

bool hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true ( cumulative_args_t  ca,
enum machine_mode  mode,
const_tree  type,
bool  named 
)

References gcc_unreachable.

bool hook_bool_CUMULATIVE_ARGS_true ( )

Generic hook that takes a CUMULATIVE_ARGS pointer and returns true.

bool hook_callee_copies_named ( cumulative_args_t  ca,
enum machine_mode  mode,
const_tree  type,
bool  named 
)

Return true if a parameter follows callee copies conventions. This version of the hook is true for all named arguments.

int hook_int_CUMULATIVE_ARGS_mode_tree_bool_0 ( cumulative_args_t  ca,
enum machine_mode  mode,
tree  type,
bool  named 
)

References gcc_unreachable.

const char* hook_invalid_arg_for_unprototyped_fn ( const_tree  typelist,
const_tree  funcdecl,
const_tree  val 
)
bool hook_pass_by_reference_must_pass_in_stack ( cumulative_args_t  c,
enum machine_mode  mode,
const_tree  type,
bool  named_arg 
)

Return true if a parameter must be passed by reference. This version of the TARGET_PASS_BY_REFERENCE hook uses just MUST_PASS_IN_STACK.

void hook_void_bitmap ( )
static bool option_affects_pch_p ( )
inlinestatic

Return true if the state of option OPTION should be stored in PCH files and checked by default_pch_valid_p. Store the option's current state in STATE if so.

References targetm.

static const char* pch_option_mismatch ( )
static

Return a message which says that a PCH file was created with a different setting of OPTION.

References integer_zero_node.

tree std_gimplify_va_arg_expr ( tree  valist,
tree  type,
gimple_seq pre_p,
gimple_seq post_p 
)

The "standard" implementation of va_arg: read the value from the current (padded) address and increment by the (padded) size.

 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.   
bool target_default_pointer_address_modes_p ( void  )

Some places still assume that all pointer or address modes are the standard Pmode and ptr_mode. These optimizations become invalid if the target actually supports multiple different modes. For now, we disable such optimizations on such targets, using this function.

Referenced by rtx_equal_for_memref_p().

bool targhook_float_words_big_endian ( void  )
bool targhook_words_big_endian ( void  )

Make some target macros useable by target-independent code.


Variable Documentation

tree stack_chk_fail_decl
static
tree stack_chk_guard_decl
static

Initialize the stack protection decls. Stack protection related decls living in libgcc.

Referenced by default_function_arg_boundary().