------- Additional Comments From rth at gcc dot gnu dot org 2005-01-14 01:36
-------
I would consider (1) wrong.
I'm not sure about (2); I think at one time there was a target that put fp
return values in the integer registers even when a coprocessor was present.
But there doesn't seem to be such a target in the tree now. Perhaps it got
purged.
I don't like (3) because that forces -mhard-float to imply MASK_FLOAT_RETURN,
which would interfere with (2) if it still existed.
As for (4), what do you think the problem *is* anyway? It's the fact
that "fxch" is marked TARGET_80387, and the only reason *that* got emitted
is to put the return value in the right place for MASK_FLOAT_RETURN. Duh.
And my suggestion is to add
if (!TARGET_80387)
target_flags &= ~MASK_FLOAT_RETURNS;
somewhere in the middle of override_options. Preferably near the other
bits that talk about fpmath etc.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19379