aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i960
diff options
context:
space:
mode:
authorDoug Evans <dje@gnu.org>1993-03-12 00:10:21 +0000
committerDoug Evans <dje@gnu.org>1993-03-12 00:10:21 +0000
commite14fa9c45a5fd9b4be62dedd78daa5559f4c83fc (patch)
treedb4aa309ff091e04ba8f5df5c60b09e38c6ea2db /gcc/config/i960
parentac07e0665d5044978a404837c22bfbf4adbe7ffa (diff)
downloadgcc-e14fa9c45a5fd9b4be62dedd78daa5559f4c83fc.zip
gcc-e14fa9c45a5fd9b4be62dedd78daa5559f4c83fc.tar.gz
gcc-e14fa9c45a5fd9b4be62dedd78daa5559f4c83fc.tar.bz2
* (RETURN_IN_MEMORY): Handle BLKmode values.
From-SVN: r3709
Diffstat (limited to 'gcc/config/i960')
-rw-r--r--gcc/config/i960/i960.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h
index 265a2e6..01d2c5e 100644
--- a/gcc/config/i960/i960.h
+++ b/gcc/config/i960/i960.h
@@ -814,10 +814,11 @@ extern struct rtx_def *i960_function_arg ();
#define FUNCTION_VALUE(TYPE, FUNC) \
gen_rtx (REG, TYPE_MODE (TYPE), 0)
-/* Force objects larger than 16 bytes to be returned in memory, since we
- only have 4 registers available for return values. */
+/* Force aggregates and objects larger than 16 bytes to be returned in memory,
+ since we only have 4 registers available for return values. */
-#define RETURN_IN_MEMORY(TYPE) (int_size_in_bytes (TYPE) > 16)
+#define RETURN_IN_MEMORY(TYPE) \
+ (TYPE_MODE (TYPE) == BLKmode || int_size_in_bytes (TYPE) > 16)
/* For an arg passed partly in registers and partly in memory,
this is the number of registers used.