diff options
Diffstat (limited to 'gcc/config/alpha/alpha.h')
-rw-r--r-- | gcc/config/alpha/alpha.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 831101e298d..3109b5c2696 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -267,6 +267,23 @@ extern void override_options (); /* Define to enable software floating point emulation. */ #define REAL_ARITHMETIC +/* The following #defines are used when compiling the routines in + libgcc1.c. Since the Alpha calling conventions require single + precision floats to be passed in the floating-point registers + (rather than in the general registers) we have to build the + libgcc1.c routines in such a way that they know the actual types + of their formal arguments and the actual types of their return + values. Otherwise, gcc will generate calls to the libgcc1.c + routines, passing arguments in the floating-point registers, + but the libgcc1.c routines will expect their arguments on the + stack (where the Alpha calling conventions require structs & + unions to be passed). */ + +#define FLOAT_VALUE_TYPE double +#define INTIFY(FLOATVAL) (FLOATVAL) +#define FLOATIFY(INTVAL) (INTVAL) +#define FLOAT_ARG_TYPE double + /* Define the size of `int'. The default is the same as the word size. */ #define INT_TYPE_SIZE 32 |