Hello Richard,

On Jun 25, 2012, at 20:36 , Richard Henderson wrote:

> Can you explain the sequence that results in multiple memory
> references?  Because I can't see how it can...

 Compared to the point at which we were observing the problem,
 the code has changed a bit in this area though not so much.

 In the current mainline, this would be from the two uses of
 "lowfrom" in:

      /* Get a copy of FROM widened to a word, if necessary.  */
      ...
      lowfrom = convert_to_mode (lowpart_mode, from, unsignedp);

      lowpart = gen_lowpart (lowpart_mode, to);
 ==>  emit_move_insn (lowpart, lowfrom);

      /* Compute the value to put in each remaining word.  */
      if (unsignedp)
        fill_value = const0_rtx;
      else
        fill_value = emit_store_flag (gen_reg_rtx (word_mode),
 ==>                                  LT, lowfrom, const0_rtx,
                                      VOIDmode, 0, -1);


Reply via email to