*** /tmp/4OxbwE_expr.c 2012-04-05 17:08:53.618103685 +0200 --- gcc/expr.c 2012-04-03 16:47:31.362229047 +0200 *************** convert_move (rtx to, rtx from, int unsi *** 522,531 **** /* No special multiword conversion insn; do it by hand. */ start_sequence (); ! /* Since we will turn this into a no conflict block, we must ensure ! that the source does not overlap the target. */ ! if (reg_overlap_mentioned_p (to, from)) from = force_reg (from_mode, from); /* Get a copy of FROM widened to a word, if necessary. */ --- 522,534 ---- /* No special multiword conversion insn; do it by hand. */ start_sequence (); ! /* Since we will turn this into a no conflict block, we must ensure the ! the source does not overlap the target so force it into an isolated ! register when maybe so. Likewise for any MEM input, since the ! conversion sequence might require several references to it and we ! must ensure we're getting the same value every time. */ ! if (MEM_P (from) || reg_overlap_mentioned_p (to, from)) from = force_reg (from_mode, from); /* Get a copy of FROM widened to a word, if necessary. */