This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFA: enable LRA for rs6000 [patch for WRF]
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: Michael Meissner <meissner at linux dot vnet dot ibm dot com>, David Edelsohn <dje dot gcc at gmail dot com>, gcc-patches <gcc-patches at gcc dot gnu dot org>, "Bergner, Peter" <bergner at vnet dot ibm dot com>, aavrunin at redhat dot com
- Date: Thu, 25 Apr 2013 15:35:00 -0400
- Subject: Re: RFA: enable LRA for rs6000 [patch for WRF]
- References: <51705B25 dot 6020402 at redhat dot com> <5171B43B dot 5070400 at redhat dot com> <20130422043535 dot GC22536 at bubble dot grove dot modra dot org> <51758EF5 dot 8050209 at redhat dot com> <20130422193149 dot GA5792 at ibm-tiger dot the-meissners dot org> <5175D919 dot 1070704 at redhat dot com> <CAGWvnynixrVKFtcTz6fqW1TbU1ZJ=V5yT9m67o=mPuASodHtJg at mail dot gmail dot com> <5176A2D4 dot 7020101 at redhat dot com> <CAGWvny=dYZRwTEu2HkqgdEzE5ZDsR2opbEkT8ok-URv2B_nXYg at mail dot gmail dot com> <5176AACE dot 9000307 at redhat dot com> <20130424194212 dot GA9758 at ibm-tiger dot the-meissners dot org> <51794BC8 dot 1020606 at redhat dot com>
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 <vmakarov@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))
{