This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: patch: teach assign_parm* about float parallels

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]