* arm-tdep.c (arm_push_arguments): Eliminate special float type
authorCorinna Vinschen <corinna@vinschen.de>
Thu, 14 Feb 2002 19:00:58 +0000 (19:00 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Thu, 14 Feb 2002 19:00:58 +0000 (19:00 +0000)
handling.
* config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Define to call
standard_coerce_float_to_double().

gdb/ChangeLog
gdb/arm-tdep.c
gdb/config/arm/tm-arm.h

index 27730ee886ba2e086c004b754ac4f37bcda4de34..a2ee75f7fb9033d14e2ef98060509484aefdb940 100644 (file)
@@ -1,3 +1,10 @@
+2002-02-14  Corinna Vinschen  <vinschen@redhat.com>
+
+       * arm-tdep.c (arm_push_arguments): Eliminate special float type
+       handling.
+       * config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Define to call
+       standard_coerce_float_to_double().
+
 2002-02-14  Christopher Faylor  <cgf@redhat.com>
 
        * config/i386/xm-cygwin.h: Revert inadvertent reinclusion of
index ad4e13c6732ef1cbab6c630236d24b610d908388..40d0bcd2b4bcba83ca3483f25d6c5760ad945f1e 100644 (file)
@@ -1353,12 +1353,7 @@ arm_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
       arg_type = check_typedef (VALUE_TYPE (args[argnum]));
       len = TYPE_LENGTH (arg_type);
 
-      /* ANSI C code passes float arguments as integers, K&R code
-         passes float arguments as doubles.  Correct for this here.  */
-      if (TYPE_CODE_FLT == TYPE_CODE (arg_type) && REGISTER_SIZE == len)
-       nstack_size += FP_REGISTER_VIRTUAL_SIZE;
-      else
-       nstack_size += len;
+      nstack_size += len;
     }
 
   /* Allocate room on the stack, and initialize our stack frame
@@ -1395,21 +1390,6 @@ arm_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
       typecode = TYPE_CODE (arg_type);
       val = (char *) VALUE_CONTENTS (args[argnum]);
 
-      /* ANSI C code passes float arguments as integers, K&R code
-         passes float arguments as doubles.  The .stabs record for 
-         for ANSI prototype floating point arguments records the
-         type as FP_INTEGER, while a K&R style (no prototype)
-         .stabs records the type as FP_FLOAT.  In this latter case
-         the compiler converts the float arguments to double before
-         calling the function.  */
-      if (TYPE_CODE_FLT == typecode && REGISTER_SIZE == len)
-       {
-         DOUBLEST dblval;
-         dblval = extract_floating (val, len);
-         len = TARGET_DOUBLE_BIT / TARGET_CHAR_BIT;
-         val = alloca (len);
-         store_floating (val, len, dblval);
-       }
 #if 1
       /* I don't know why this code was disable. The only logical use
          for a function pointer is to call that function, so setting
index df973afd5fce378b3c83ccce4813bc594254423b..27a9c8b0358e1f2c557ef5750f4b830d1fbd0791 100644 (file)
@@ -73,4 +73,6 @@ extern int arm_call_dummy_breakpoint_offset (void);
 /* The first 0x20 bytes are the trap vectors.  */
 #define LOWEST_PC      0x20
 
+#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (standard_coerce_float_to_double (formal, actual))
+
 #endif /* TM_ARM_H */