Commit ecd49d51 by Olivier Hainque Committed by Olivier Hainque

expr.c (convert_move): Latch mem integer inputs into a register before expanding…

expr.c (convert_move): Latch mem integer inputs into a register before expanding a multi-instructions...

        * expr.c (convert_move): Latch mem integer inputs into a
        register before expanding a multi-instructions sequence.

From-SVN: r189040
parent e07b233d
2012-06-28 OLivier Hainque <hainque@adacore.com>
* expr.c (convert_move): Latch mem integer inputs into a
register before expanding a multi-instructions sequence.
2012-06-28 Alexandre Oliva <aoliva@redhat.com>, 2012-06-28 Alexandre Oliva <aoliva@redhat.com>,
Uros Bizjak <ubizjak@gmail.com>, Uros Bizjak <ubizjak@gmail.com>,
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
......
...@@ -520,10 +520,13 @@ convert_move (rtx to, rtx from, int unsignedp) ...@@ -520,10 +520,13 @@ convert_move (rtx to, rtx from, int unsignedp)
/* No special multiword conversion insn; do it by hand. */ /* No special multiword conversion insn; do it by hand. */
start_sequence (); start_sequence ();
/* Since we will turn this into a no conflict block, we must ensure /* Since we will turn this into a no conflict block, we must ensure the
that the source does not overlap the target. */ 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 (reg_overlap_mentioned_p (to, from)) if (MEM_P (from) || reg_overlap_mentioned_p (to, from))
from = force_reg (from_mode, from); from = force_reg (from_mode, from);
/* Get a copy of FROM widened to a word, if necessary. */ /* Get a copy of FROM widened to a word, if necessary. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment