* 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().
This commit is contained in:
parent
1ea98d1203
commit
6b230f1b26
3 changed files with 10 additions and 21 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue