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