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