X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftarget.h;h=be423b9194596de84548fd82363148536dbd5f66;hb=c445c8dabaa2550c4c9e2093e6bf438999d5b946;hp=e4e82a3dcbd797c837155078d10617edf37ab407;hpb=f57ddb4876c94f633a27d610558d4f1fd0be9a0d;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/target.h b/gcc/target.h index e4e82a3dcbd..be423b91945 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -476,9 +476,9 @@ struct gcc_target function, or NULL_TREE if not available. */ tree (* builtin_vectorized_function) (tree, tree, tree); - /* Returns a code for builtin that realizes vectorized version of - conversion, or NULL_TREE if not available. */ - tree (* builtin_conversion) (unsigned, tree); + /* Returns a function declaration for a builtin that realizes the + vector conversion, or NULL_TREE if not available. */ + tree (* builtin_conversion) (unsigned, tree, tree); /* Target builtin that implements vector widening multiplication. builtin_mul_widen_eve computes the element-by-element products @@ -549,6 +549,10 @@ struct gcc_target Ignored if NULL. */ const struct attribute_spec *attribute_table; + /* Return true iff attribute NAME expects a plain identifier as its first + argument. */ + bool (*attribute_takes_identifier_p) (const_tree name); + /* Return zero if the attributes on TYPE1 and TYPE2 are incompatible, one if they are compatible and two if they are nearly compatible (which causes a warning to be generated). */ @@ -651,6 +655,10 @@ struct gcc_target /* True if X is considered to be commutative. */ bool (* commutative_p) (const_rtx, int); + + /* True if ADDR is an address-expression whose effect depends + on the mode of the memory reference it is used in. */ + bool (* mode_dependent_address_p) (const_rtx addr); /* Given an invalid address X for a given machine mode, try machine-specific ways to make it legitimate. Return X or an invalid address on failure. */ @@ -762,6 +770,12 @@ struct gcc_target for further details. */ bool (* vector_mode_supported_p) (enum machine_mode mode); + /* True for MODE if the target expects that registers in this mode will + be allocated to registers in a small register class. The compiler is + allowed to use registers explicitly used in the rtl as spill registers + but it should prevent extending the lifetime of these registers. */ + bool (* small_register_classes_for_mode_p) (enum machine_mode mode); + /* Compute a (partial) cost for rtx X. Return true if the complete cost has been computed, and false if subexpressions should be scanned. In either case, *TOTAL contains the cost result. */ @@ -968,6 +982,10 @@ struct gcc_target calling the function FN_NAME. */ rtx (*libcall_value) (enum machine_mode, const_rtx); + /* Return true if REGNO is a possible register number for + a function value as seen by the caller. */ + bool (*function_value_regno_p) (const unsigned int); + /* Return an rtx for the argument pointer incoming to the current function. */ rtx (*internal_arg_pointer) (void);