diff --git a/include/ChangeLog b/include/ChangeLog index f3dc43334..1bde4c5b6 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,9 @@ +2007-11-07 Joseph Myers + Daniel Jacobowitz + + * floatformat.h (struct floatformat): Add split_half field. + (floatformat_ibm_long_double): New. + 2007-11-05 Danny Smith * coff/pe.h (COFF_ENCODE_ALIGNMENT) Define. diff --git a/include/floatformat.h b/include/floatformat.h index f1bd7f601..c5f60a3cd 100644 --- a/include/floatformat.h +++ b/include/floatformat.h @@ -85,6 +85,13 @@ struct floatformat /* Validator method. */ int (*is_valid) (const struct floatformat *fmt, const void *from); + + /* Is the format actually the sum of two smaller floating point + formats (IBM long double, as described in + gcc/config/rs6000/darwin-ldouble-format)? If so, this is the + smaller format in question, and the fields sign_start through + intbit describe the first half. If not, this is NULL. */ + const struct floatformat *split_half; }; /* floatformats for IEEE single and double, big and little endian. */ @@ -118,6 +125,8 @@ extern const struct floatformat floatformat_ia64_spill_big; extern const struct floatformat floatformat_ia64_spill_little; extern const struct floatformat floatformat_ia64_quad_big; extern const struct floatformat floatformat_ia64_quad_little; +/* IBM long double (double+double). */ +extern const struct floatformat floatformat_ibm_long_double; /* Convert from FMT to a double. FROM is the address of the extended float.