Perry Smith <[EMAIL PROTECTED]> writes: | Thanks Gaby... | | To recap, my current quest is to resolve references to symbols like | __floatdidf. This is in a library for ppc64/soft-float. | | Ian pointed me to ppc64-fp.c. When I try to compile it, TFtype is | undefined. It is suppose to get defined in fp-bit.h but only if | __LDBL_MANT_DIG__ is set to 113 or 106. Right now, in the | environment that I have now, ___LDBL_MANT_DIG__ is set to 53. In the | RS/6000, long doubles are 106. (I'm not sure if "long double" is the | right term to use here.) | | I am compiling with -maix64. It appears to me that some parts of gcc | or libgcc assume that this implies long double but c-cppbuiltin.c | appears to not make that assumption.
hmm, it looks to me that there is some communication mismatch between the target back-end and the front-end. From gcc/c-cppbuiltin.c:builtin_define_float_constants: fmt = REAL_MODE_FORMAT (TYPE_MODE (type)); gcc_assert (fmt->b != 10); gcc_assert (fmt->b != 10); /* The radix of the exponent representation. */ if (type == float_type_node) builtin_define_with_int_value ("__FLT_RADIX__", fmt->b); log10_b = log10_2 * fmt->log2_b; /* The number of radix digits, p, in the floating-point significand. */ sprintf (name, "__%s_MANT_DIG__", name_prefix); builtin_define_with_int_value (name, fmt->p); So, for some reasons, it looks like TYPE_MODE (long_double_type_node) does not have the information you would like it to report (106, instead of 53). do I understand correctly that -maix64 is supposed to change the layout for long double? -- Gaby