On 05/31/2011 07:51 PM, Richard Sandiford wrote:
> Ping for:
> 
>     http://gcc.gnu.org/ml/gcc-patches/2011-04/msg01327.html
> 
> It fixes the expansion of multiword operations in cases where the
> suggested target is a hard register and where CANNOT_CHANGE_MODE_CLASS
> forbids word-mode subparts.

Can you call the new function valid_multiword_target_p? In a sense, we
already know it's a multiword target, so the function name is a bit
unfortunate.

I see two copies of this code

          /* If TARGET is the same as one of the operands, the REG_EQUAL note
             won't be accurate, so use a new target.  */
-         if (target == 0 || target == op0 || target == op1)

in expand_binop, and you seem to be changing only one? Also, there's

      xtarget = gen_reg_rtx (mode);

      if (target == 0 || !REG_P (target))
        target = xtarget;

      /* Indicate for flow that the entire target reg is being set.  */
      if (REG_P (target))
        emit_clobber (xtarget);

Ok with these changes (or if there's a good reason not to touch the ones
you left out).


Bernd

Reply via email to