This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
assign_parm_setup_block handling of parallels
- From: Aldy Hernandez <aldyh at redhat dot com>
- To: rth at redhat dot com, gcc at gcc dot gnu dot org
- Date: Thu, 23 Dec 2004 16:28:24 -0400
- Subject: assign_parm_setup_block handling of parallels
Hi Richard. Hi folks.
The parallel returned by spe_build_register_parallel() is about to change
to a DImode, as you've suggested, to generate better code on e500v2
(and code that actually works as a bonus).
Something like:
(parallel:DF [
(expr_list:REG_DEP_TRUE (reg:DI 3 3)
(const_int 0 [0x0]))
])
However... consider this (assign_parm_setup_block):
/* If we've a non-block object that's nevertheless passed in parts,
reconstitute it in register operations rather than on the stack. */
if (GET_CODE (entry_parm) == PARALLEL
&& data->nominal_mode != BLKmode
&& XVECLEN (entry_parm, 0) > 1 <-- BOO HISS!
&& use_register_for_decl (parm))
Is this vector length check here for a particular reason? Can we remove
it, or should I add code to look inside and allow this condition, if
the register in the parallel will span more than one hard register?
Cheers.
Aldy