X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftarget.h;h=63f5d4efb792e72954e1921e9ee07632f374ce8d;hb=b1ca4af4d0c57dafd168913768171baf8d7408e6;hp=8c61bfe9692016e3068d8214bd2b7f3ff1f1f841;hpb=b215c058e8d54661a425789ce08b8658e89b0282;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/target.h b/gcc/target.h index 8c61bfe9692..63f5d4efb79 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -198,6 +198,9 @@ struct gcc_target linker to not dead code strip this symbol. */ void (*mark_decl_preserved) (const char *); + /* Output the definition of a section anchor. */ + void (*output_anchor) (rtx); + /* Output a DTP-relative reference to a TLS symbol. */ void (*output_dwarf_dtprel) (FILE *file, int size, rtx x); @@ -369,6 +372,10 @@ struct gcc_target rtx (* expand_builtin) (tree exp, rtx target, rtx subtarget, enum machine_mode mode, int ignore); + /* Expand a target-specific library builtin. */ + rtx (* expand_library_builtin) (tree exp, rtx target, rtx subtarget, + enum machine_mode mode, int ignore); + /* Select a replacement for a target-specific builtin. This is done *before* regular type checking, and so allows the target to implement a crude form of function overloading. The result is a complete @@ -417,6 +424,16 @@ struct gcc_target /* Given an address RTX, undo the effects of LEGITIMIZE_ADDRESS. */ rtx (* delegitimize_address) (rtx); + /* True if the given constant can be put into an object_block. */ + bool (* use_blocks_for_constant_p) (enum machine_mode, rtx); + + /* The minimum and maximum byte offsets for anchored addresses. */ + HOST_WIDE_INT min_anchor_offset; + HOST_WIDE_INT max_anchor_offset; + + /* True if section anchors can be used to access the given symbol. */ + bool (* use_anchors_for_symbol_p) (rtx); + /* True if it is OK to do sibling call optimization for the specified call expression EXP. DECL will be the called function, or NULL if this is an indirect call. */ @@ -440,6 +457,11 @@ struct gcc_target return the mask that they apply. Return 0 otherwise. */ unsigned HOST_WIDE_INT (* shift_truncation_mask) (enum machine_mode mode); + /* Return the number of divisions in the given MODE that should be present, + so that it is profitable to turn the division into a multiplication by + the reciprocal. */ + unsigned int (* min_divisions_for_recip_mul) (enum machine_mode mode); + /* True if MODE is valid for a pointer in __attribute__((mode("MODE"))). */ bool (* valid_pointer_mode) (enum machine_mode mode); @@ -698,6 +720,11 @@ struct gcc_target target modifications). */ void (*adjust_class_at_definition) (tree type); } cxx; + + /* For targets that need to mark extra registers as live on entry to + the function, they should define this target hook and set their + bits in the bitmap passed in. */ + void (*live_on_entry) (bitmap); /* True if unwinding tables should be generated by default. */ bool unwind_tables_default;