Commit cde43acd by Richard Earnshaw

Temporarily revert previous

From-SVN: r191306
parent 57132d23
2012-09-14 Richard Earnshaw <rearnsha@arm.com>
* reload.c (find_dummy_reload): Don't use OUT as a reload reg
for IN if it overlaps a fixed register.
2012-09-14 Eric Botcazou <ebotcazou@adacore.com> 2012-09-14 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/44194 PR rtl-optimization/44194
......
...@@ -2036,12 +2036,7 @@ find_dummy_reload (rtx real_in, rtx real_out, rtx *inloc, rtx *outloc, ...@@ -2036,12 +2036,7 @@ find_dummy_reload (rtx real_in, rtx real_out, rtx *inloc, rtx *outloc,
However, we only ignore IN in its role as this reload. However, we only ignore IN in its role as this reload.
If the insn uses IN elsewhere and it contains OUT, If the insn uses IN elsewhere and it contains OUT,
that counts. We can't be sure it's the "same" operand that counts. We can't be sure it's the "same" operand
so it might not go through this reload. so it might not go through this reload. */
We also need to avoid using OUT if it, or part of it, is a
fixed register. Modifying such registers, even transiently,
may have undefined effects on the machine, such as modifying
the stack pointer. */
saved_rtx = *inloc; saved_rtx = *inloc;
*inloc = const0_rtx; *inloc = const0_rtx;
...@@ -2054,8 +2049,7 @@ find_dummy_reload (rtx real_in, rtx real_out, rtx *inloc, rtx *outloc, ...@@ -2054,8 +2049,7 @@ find_dummy_reload (rtx real_in, rtx real_out, rtx *inloc, rtx *outloc,
for (i = 0; i < nwords; i++) for (i = 0; i < nwords; i++)
if (! TEST_HARD_REG_BIT (reg_class_contents[(int) rclass], if (! TEST_HARD_REG_BIT (reg_class_contents[(int) rclass],
regno + i) regno + i))
|| fixed_regs[regno + i])
break; break;
if (i == nwords) if (i == nwords)
......
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