aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1997-12-24 22:31:54 +0000
committerJeff Law <law@gcc.gnu.org>1997-12-24 15:31:54 -0700
commitd9a4ee007b9041817143d1fa761d5f2528818dd0 (patch)
tree445d6cc7b1e2c6973fb18054e37e65d6c5eb44ae
parent04bd620d207354e517075a6abc32db18986180a7 (diff)
downloadgcc-d9a4ee007b9041817143d1fa761d5f2528818dd0.zip
gcc-d9a4ee007b9041817143d1fa761d5f2528818dd0.tar.gz
gcc-d9a4ee007b9041817143d1fa761d5f2528818dd0.tar.bz2
* expr.h (MUST_PASS_IN_STACK): Allow target port to override.
From-SVN: r17230
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/expr.h2
-rw-r--r--gcc/tm.texi7
3 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fd3149d..575f9a5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Wed Dec 24 23:33:17 1997 Jeffrey A Law (law@cygnus.com)
+
+ * expr.h (MUST_PASS_IN_STACK): Allow target port to override.
+
Wed Dec 24 23:12:14 1997 Jim Wilson <wilson@cygnus.com>
* abi64.h (LONG_MAX_SPEC): Check MIPS_ABI_DEFAULT and TARGET_DEFAULT,
diff --git a/gcc/expr.h b/gcc/expr.h
index aec539a..62909c3 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -216,6 +216,7 @@ enum direction {none, upward, downward}; /* Value has this type. */
So a value padded in memory at the upper end can't go in a register.
For a little-endian machine, the reverse is true. */
+#ifndef MUST_PASS_IN_STACK
#define MUST_PASS_IN_STACK(MODE,TYPE) \
((TYPE) != 0 \
&& (TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST \
@@ -226,6 +227,7 @@ enum direction {none, upward, downward}; /* Value has this type. */
% (PARM_BOUNDARY / BITS_PER_UNIT))) \
&& (FUNCTION_ARG_PADDING (MODE, TYPE) \
== (BYTES_BIG_ENDIAN ? upward : downward)))))
+#endif
/* Nonzero if type TYPE should be returned in memory.
Most machines can use the following default definition. */
diff --git a/gcc/tm.texi b/gcc/tm.texi
index e24a7e2..3a9b310 100644
--- a/gcc/tm.texi
+++ b/gcc/tm.texi
@@ -2696,6 +2696,13 @@ argument, the compiler will abort. If @code{REG_PARM_STACK_SPACE} is
defined, the argument will be computed in the stack and then loaded into
a register.
+@findex MUST_PASS_IN_STACK
+@item MUST_PASS_IN_STACK (@var{mode}, @var{type})
+Define as a C expression that evaluates to nonzero if we do not know how
+to pass TYPE solely in registers. The file @file{expr.h} defines a
+definition that is usually appropriate, refer to @file{expr.h} for additional
+documentation.
+
@findex FUNCTION_INCOMING_ARG
@item FUNCTION_INCOMING_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
Define this macro if the target machine has ``register windows'', so