aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2004-01-15 18:02:01 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2004-01-15 18:02:01 +0000
commit34bf1fe3adbcbf91e15e8ad167075e78ac947079 (patch)
treebdbd53502f7ddd2c6fe6c291fe8a7ed19e2ce2a2 /gcc
parente5396f908ad826fcb3e114c548b72646f5956c9d (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/h8300/h8300.c12
-rw-r--r--gcc/config/h8300/h8300.h10
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. */