aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-08-21 01:50:36 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-08-21 01:50:36 -0700
commit487b97e0564e46f876d040a2246290ba47aaf579 (patch)
tree05ad125f735812d7a4f21dd6adcd256826c8a20c /gcc/config
parent08b3bb93ec89ba59d9abf17192f4a06ef8fa27e0 (diff)
downloadgcc-487b97e0564e46f876d040a2246290ba47aaf579.zip
gcc-487b97e0564e46f876d040a2246290ba47aaf579.tar.gz
gcc-487b97e0564e46f876d040a2246290ba47aaf579.tar.bz2
ia64.c (ia64_return_in_memory): True for variable sized types.
* config/ia64/ia64.c (ia64_return_in_memory): True for variable sized types. From-SVN: r45073
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/ia64/ia64.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index ec082fc..2c539fe 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -3206,11 +3206,16 @@ ia64_return_in_memory (valtype)
{
enum machine_mode mode;
enum machine_mode hfa_mode;
- int byte_size;
+ HOST_WIDE_INT byte_size;
mode = TYPE_MODE (valtype);
- byte_size = ((mode == BLKmode)
- ? int_size_in_bytes (valtype) : GET_MODE_SIZE (mode));
+ byte_size = GET_MODE_SIZE (mode);
+ if (mode == BLKmode)
+ {
+ byte_size = int_size_in_bytes (valtype);
+ if (byte_size < 0)
+ return 1;
+ }
/* Hfa's with up to 8 elements are returned in the FP argument registers. */
@@ -3224,7 +3229,6 @@ ia64_return_in_memory (valtype)
else
return 0;
}
-
else if (byte_size > UNITS_PER_WORD * MAX_INT_RETURN_SLOTS)
return 1;
else