This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: patch: teach assign_parm* about float parallels
- From: Richard Henderson <rth at redhat dot com>
- To: Aldy Hernandez <aldyh at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 27 Oct 2004 14:36:31 -0700
- Subject: Re: patch: teach assign_parm* about float parallels
- References: <20041027200024.GA19146@redhat.com>
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~