* s390-tdep.c (is_simple_arg): Structs and unions exactly eight
authorJim Blandy <jimb@codesourcery.com>
Fri, 16 Nov 2001 02:48:30 +0000 (02:48 +0000)
committerJim Blandy <jimb@codesourcery.com>
Fri, 16 Nov 2001 02:48:30 +0000 (02:48 +0000)
bytes long should be handled as DOUBLE_ARGs; don't recognize them
as SIMPLE_ARGs.

gdb/ChangeLog
gdb/s390-tdep.c

index 0f6c602ab5b8cac6165e00d62dffcc3bf3b44c28..3e20ed5efae2c5f599f0bd63962d23fa4a0b7ae9 100644 (file)
@@ -1,3 +1,9 @@
+2001-11-15  Jim Blandy  <jimb@redhat.com>
+
+       * s390-tdep.c (is_simple_arg): Structs and unions exactly eight
+       bytes long should be handled as DOUBLE_ARGs; don't recognize them
+       as SIMPLE_ARGs.
+
 2001-11-12  Andrew Cagney  <ac131313@redhat.com>
 
        * remote.c (struct packet_reg): Declare.
index d2fa1a0f5a6fdb6e4269ed7fc1c20b7dab55be4b..d79654d878f534b48779ce4453e288dc760c64b5 100644 (file)
@@ -1243,10 +1243,13 @@ is_simple_arg (struct type *type)
   enum type_code code = TYPE_CODE (type);
   unsigned length = TYPE_LENGTH (type);
 
+  /* This is almost a direct translation of the ABI's language, except
+     that we have to exclude 8-byte structs; those are DOUBLE_ARGs.  */
   return ((is_integer_like (type) && length <= 4)
           || is_pointer_like (type)
-          || code == TYPE_CODE_STRUCT
-          || code == TYPE_CODE_UNION
+          || ((code == TYPE_CODE_STRUCT
+               || code == TYPE_CODE_UNION)
+              && length != 8)
           || (code == TYPE_CODE_FLT && length == 16));
 }