diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2004-01-15 18:02:01 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2004-01-15 18:02:01 +0000 |
commit | 34bf1fe3adbcbf91e15e8ad167075e78ac947079 (patch) | |
tree | bdbd53502f7ddd2c6fe6c291fe8a7ed19e2ce2a2 | |
parent | e5396f908ad826fcb3e114c548b72646f5956c9d (diff) | |
download | gcc-34bf1fe3adbcbf91e15e8ad167075e78ac947079.zip gcc-34bf1fe3adbcbf91e15e8ad167075e78ac947079.tar.gz gcc-34bf1fe3adbcbf91e15e8ad167075e78ac947079.tar.bz2 |
h8300.c (h8300_return_in_memory): New.
* config/h8300/h8300.c (h8300_return_in_memory): New.
(TARGET_STRUCT_VALUE_RTX): Likewise.
(TARGET_RETURN_IN_MEMORY): Likewise.
* config/h8300/h8300.h (STRUCT_VALUE): Remove.
(RETURN_IN_MEMORY): Likewise.
From-SVN: r75933
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/h8300/h8300.c | 12 | ||||
-rw-r--r-- | gcc/config/h8300/h8300.h | 10 |
3 files changed, 20 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 184b44d..2b68372 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-01-15 Kazu Hirata <kazu@cs.umass.edu> + + * config/h8300/h8300.c (h8300_return_in_memory): New. + (TARGET_STRUCT_VALUE_RTX): Likewise. + (TARGET_RETURN_IN_MEMORY): Likewise. + * config/h8300/h8300.h (STRUCT_VALUE): Remove. + (RETURN_IN_MEMORY): Likewise. + 2004-01-15 Richard Earnshaw <rearnsha@arm.com> PR optimization/13375 diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c index d4e315b..5c6f8c2 100644 --- a/gcc/config/h8300/h8300.c +++ b/gcc/config/h8300/h8300.c @@ -4564,6 +4564,13 @@ h8300_init_libfuncs (void) set_optab_libfunc (umod_optab, HImode, "__umodhi3"); } +static bool +h8300_return_in_memory (tree type, tree fntype ATTRIBUTE_UNUSED) +{ + return (TYPE_MODE (type) == BLKmode + || GET_MODE_SIZE (TYPE_MODE (type)) > (TARGET_H8300 ? 4 : 8)); +} + /* Initialize the GCC target structure. */ #undef TARGET_ATTRIBUTE_TABLE #define TARGET_ATTRIBUTE_TABLE h8300_attribute_table @@ -4591,4 +4598,9 @@ h8300_init_libfuncs (void) #undef TARGET_INIT_LIBFUNCS #define TARGET_INIT_LIBFUNCS h8300_init_libfuncs +#undef TARGET_STRUCT_VALUE_RTX +#define TARGET_STRUCT_VALUE_RTX hook_rtx_tree_int_null +#undef TARGET_RETURN_IN_MEMORY +#define TARGET_RETURN_IN_MEMORY h8300_return_in_memory + struct gcc_target targetm = TARGET_INITIALIZER; diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h index b60fc52..240abdf 100644 --- a/gcc/config/h8300/h8300.h +++ b/gcc/config/h8300/h8300.h @@ -632,16 +632,6 @@ enum reg_class { #define FUNCTION_ARG_REGNO_P(N) (TARGET_QUICKCALL ? N < 3 : 0) -/* Register in which address to store a structure value - is passed to a function. */ - -#define STRUCT_VALUE 0 - -/* Return true if X should be returned in memory. */ -#define RETURN_IN_MEMORY(X) \ - (TYPE_MODE (X) == BLKmode \ - || GET_MODE_SIZE (TYPE_MODE (X)) > (TARGET_H8300 ? 4 : 8)) - /* When defined, the compiler allows registers explicitly used in the rtl to be used as spill registers but prevents the compiler from extending the lifetime of these registers. */ |