ia64.c (ia64_return_in_memory): True for variable sized types.
authorRichard Henderson <rth@redhat.com>
Tue, 21 Aug 2001 08:50:36 +0000 (01:50 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 21 Aug 2001 08:50:36 +0000 (01:50 -0700)
        * config/ia64/ia64.c (ia64_return_in_memory): True for variable
        sized types.

From-SVN: r45073

gcc/ChangeLog
gcc/config/ia64/ia64.c

index 8f715052e83be1c99176ebaca7cd126f33fa010f..175f627af310ae5d27c2149238589748eb951569 100644 (file)
@@ -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.
index ec082fc58fbe959c4dcbb8e7d7ecfb7fa6d9d4c2..2c539fe7616e3a7a333fb858ff3d69985f3e8cff 100644 (file)
@@ -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