diff options
author | Richard Henderson <rth@redhat.com> | 2001-08-21 01:50:36 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-08-21 01:50:36 -0700 |
commit | 487b97e0564e46f876d040a2246290ba47aaf579 (patch) | |
tree | 05ad125f735812d7a4f21dd6adcd256826c8a20c | |
parent | 08b3bb93ec89ba59d9abf17192f4a06ef8fa27e0 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 12 |
2 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f71505..175f627 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-08-21 Richard Henderson <rth@redhat.com> + + * config/ia64/ia64.c (ia64_return_in_memory): True for variable + sized types. + 2001-08-21 Neil Booth <neil@daikokuya.demon.co.uk> * cpphash.h (_cpp_push_next_buffer): New. 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 |