This is the mail archive of the gcc@gcc.gnu.org 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]

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


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