[PATCH, soft-fp]: Use mode(word) as a return type from soft-fp comparisons
Uros Bizjak
ubizjak@gmail.com
Mon Jun 11 16:26:00 GMT 2007
Daniel Jacobowitz wrote:
> On Sat, Jun 09, 2007 at 11:05:18AM +0200, Uros Bizjak wrote:
>
>> Hello!
>>
>> This patch fixes the problems exposed with the testcase below. The problem is,
>> that soft-fp functions return int value, where gcc expects the return from
>> soft-fp functions to be in word mode. On x86_64 target, word_mode equals
>> DImode, where int equals SImode, leading to comparison failures for certain
>> class of input operands.
>>
>
> Isn't someone (Andreas Krebbel?) trying to eliminate uses of
> mode((word))?
>
Yes, but regarding soft-fp compares, we have this comment in
config/fp-bit.h:
/* The type of the result of a floating point comparison. This must
match `word_mode' in GCC for the target. */
#ifndef CMPtype
typedef int CMPtype __attribute__ ((mode (word)));
#endif
And gcc indeed expands the check for returned variable in word_mode
(DImode on x86_64).
The problem is, that glibc emits FP comparison return tristate as "int".
soft-fp from glibc is currently not compatible with gcc expansion on
targets, where word_mode != int.
Here is a $1m question:
Which part is to be fixed?
a) gcc+libgcc should be converted to return (libgcc) and to expect (gcc)
"int" from soft-fp comparisons.
b) soft-fp from glibc should convert soft-fp functions to return word mode
Uros.
More information about the Libc-alpha
mailing list