patch: teach assign_parm* about float parallels
Richard Henderson
rth@redhat.com
Wed Oct 27 22:13:00 GMT 2004
On Wed, Oct 27, 2004 at 04:00:24PM -0400, Aldy Hernandez wrote:
> In your original email, when I showed you this, you mentioned I
> should do this without the SCALAR_INT_MODE_P check, but now I'm all
> paranoid because of the recent breakage.
Well, the reason I said that is because it's just as wrong to do
emit_group_store( (reg:SI), (parallel:DI) )
as it is with floating point modes.
I'm not sure how to show the problem though. You'd have to have a
target for which DImode was passed in multiple registers, "int" maps
to DImode and "short" maps to something smaller. But I don't think
such an ABI exists.
> I've also added a check for BLKmode, for good measure, but I doubt
> any one is passing BLKmode's in parallels for function arguments.
Definitely there are. See amd64 or ia64 or sparc64 ABIs.
But in that case I'd consider it a large bug if
((data->nominal_mode == BLKmode || data->passed_mode == BLKmode)
&& data->nominal_mode != data->passed_mode)
were true. So in my opinion,
data->nominal_mode != data->passed_mode
is still the correct test. A comment block describing the possible
combinations wouldn't be out of place.
r~
More information about the Gcc-patches
mailing list