On 04/25/2013 11:29 AM, Vladimir Makarov wrote:
On 04/24/2013 03:42 PM, Michael Meissner wrote:
I'm seeing a lot of failures with these changes in make check.
I've reproduced it, Mike. I'll work on it. Thanks.
I've fixed it, Mike. It is on the branch now.
2013-04-25 Vladimir Makarov <vmaka...@redhat.com>
* config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard reg
for LRA SD moves.
Index: config/rs6000/rs6000.c
===================================================================
--- config/rs6000/rs6000.c (revision 198263)
+++ config/rs6000/rs6000.c (working copy)
@@ -7377,9 +7377,14 @@ rs6000_emit_move (rtx dest, rtx source,
if (regno >= FIRST_PSEUDO_REGISTER)
{
- cl = reg_preferred_class (regno);
- gcc_assert (cl != NO_REGS);
- regno = ira_class_hard_regs[cl][0];
+ if (reg_renumber[regno] >= 0)
+ regno = reg_renumber[regno];
+ else
+ {
+ cl = reg_preferred_class (regno);
+ gcc_assert (cl != NO_REGS);
+ regno = ira_class_hard_regs[cl][0];
+ }
}
if (FP_REGNO_P (regno))
{
@@ -7407,9 +7412,14 @@ rs6000_emit_move (rtx dest, rtx source,
if (regno >= FIRST_PSEUDO_REGISTER)
{
- cl = reg_preferred_class (regno);
- gcc_assert (cl != NO_REGS);
- regno = ira_class_hard_regs[cl][0];
+ if (reg_renumber[regno] >= 0)
+ regno = reg_renumber[regno];
+ else
+ {
+ cl = reg_preferred_class (regno);
+ gcc_assert (cl != NO_REGS);
+ regno = ira_class_hard_regs[cl][0];
+ }
}
if (FP_REGNO_P (regno))
{