Commit bb948ad3 by Roman Zippel Committed by Richard Henderson

regmove.c (regmove_optimize): Avoid setting a register twice in a parallel set.

        * regmove.c (regmove_optimize): Avoid setting a register twice in
        a parallel set.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r44785
parent cbf4c36f
2001-08-10 Roman Zippel <zippel@linux-m68k.org>
Richard Henderson <rth@redhat.com>
* regmove.c (regmove_optimize): Avoid setting a register twice in
a parallel set.
2001-08-10 Richard Henderson <rth@redhat.com> 2001-08-10 Richard Henderson <rth@redhat.com>
* doc/extend.texi (Arrays and pointers implementation): Document * doc/extend.texi (Arrays and pointers implementation): Document
......
...@@ -1319,6 +1319,14 @@ regmove_optimize (f, nregs, regmove_dump_file) ...@@ -1319,6 +1319,14 @@ regmove_optimize (f, nregs, regmove_dump_file)
if (! set) if (! set)
continue; continue;
/* Note that single_set ignores parts of a parallel set for
which one of the destinations is REG_UNUSED. We can't
handle that here, since we can wind up rewriting things
such that a single register is set twice within a single
parallel. */
if (reg_set_p (src, insn))
continue;
/* match_no/dst must be a write-only operand, and /* match_no/dst must be a write-only operand, and
operand_operand/src must be a read-only operand. */ operand_operand/src must be a read-only operand. */
if (match.use[op_no] != READ if (match.use[op_no] != READ
......
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