typedef struct
{
- int kind, radix, digits, bit_size;
-
- int range;
- mpz_t huge;
-
- mpz_t min_int, max_int; /* Values really representable by the target */
+ /* Values really representable by the target. */
+ mpz_t huge, min_int, max_int;
+
+ int kind, radix, digits, bit_size, range;
+
+ /* True if the C type of the given name maps to this precision.
+ Note that more than one bit can be set. */
+ unsigned int c_char : 1;
+ unsigned int c_short : 1;
+ unsigned int c_int : 1;
+ unsigned int c_long : 1;
+ unsigned int c_long_long : 1;
}
gfc_integer_info;
{
int kind, bit_size;
+ /* True if the C++ type bool, C99 type _Bool, maps to this precision. */
+ unsigned int c_bool : 1;
}
gfc_logical_info;
typedef struct
{
+ mpfr_t epsilon, huge, tiny;
int kind, radix, digits, min_exponent, max_exponent;
-
int range, precision;
- mpfr_t epsilon, huge, tiny;
+
+ /* The precision of the type as reported by GET_MODE_PRECISION. */
+ int mode_precision;
+
+ /* True if the C type of the given name maps to this precision.
+ Note that more than one bit can be set. */
+ unsigned int c_float : 1;
+ unsigned int c_double : 1;
+ unsigned int c_long_double : 1;
}
gfc_real_info;