Skip to content

Commit 0c0a0f3

Browse files
author
vmakarov
committed
2018-04-13 Vladimir Makarov <[email protected]>
PR rtl-optimization/79916 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard regs (if any) to define how to gnerate SD moves when LRA is in progress. 2018-04-13 Vladimir Makarov <[email protected]> PR rtl-optimization/79916 * gcc.target/powerpc/pr79916.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@259379 138bc75d-0d04-0410-961f-82ee72b054a4
1 parent 12ef5aa commit 0c0a0f3

File tree

4 files changed

+580
-4
lines changed

4 files changed

+580
-4
lines changed

gcc/ChangeLog

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
2018-04-13 Vladimir Makarov <[email protected]>
2+
3+
PR rtl-optimization/79916
4+
* config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
5+
regs (if any) to define how to gnerate SD moves when LRA is in
6+
progress.
7+
18
2018-04-13 Jakub Jelinek <[email protected]>
29

310
PR rtl-optimization/85393

gcc/config/rs6000/rs6000.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10610,7 +10610,9 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode)
1061010610
if (regno >= FIRST_PSEUDO_REGISTER)
1061110611
{
1061210612
cl = reg_preferred_class (regno);
10613-
regno = cl == NO_REGS ? -1 : ira_class_hard_regs[cl][1];
10613+
regno = reg_renumber[regno];
10614+
if (regno < 0)
10615+
regno = cl == NO_REGS ? -1 : ira_class_hard_regs[cl][1];
1061410616
}
1061510617
if (regno >= 0 && ! FP_REGNO_P (regno))
1061610618
{
@@ -10635,7 +10637,9 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode)
1063510637
{
1063610638
cl = reg_preferred_class (regno);
1063710639
gcc_assert (cl != NO_REGS);
10638-
regno = ira_class_hard_regs[cl][0];
10640+
regno = reg_renumber[regno];
10641+
if (regno < 0)
10642+
regno = ira_class_hard_regs[cl][0];
1063910643
}
1064010644
if (FP_REGNO_P (regno))
1064110645
{
@@ -10664,7 +10668,9 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode)
1066410668
if (regno >= FIRST_PSEUDO_REGISTER)
1066510669
{
1066610670
cl = reg_preferred_class (regno);
10667-
regno = cl == NO_REGS ? -1 : ira_class_hard_regs[cl][0];
10671+
regno = reg_renumber[regno];
10672+
if (regno < 0)
10673+
regno = cl == NO_REGS ? -1 : ira_class_hard_regs[cl][0];
1066810674
}
1066910675
if (regno >= 0 && ! FP_REGNO_P (regno))
1067010676
{
@@ -10689,7 +10695,9 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode)
1068910695
{
1069010696
cl = reg_preferred_class (regno);
1069110697
gcc_assert (cl != NO_REGS);
10692-
regno = ira_class_hard_regs[cl][0];
10698+
regno = reg_renumber[regno];
10699+
if (regno < 0)
10700+
regno = ira_class_hard_regs[cl][0];
1069310701
}
1069410702
if (FP_REGNO_P (regno))
1069510703
{

gcc/testsuite/ChangeLog

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
2018-04-13 Vladimir Makarov <[email protected]>
2+
3+
PR rtl-optimization/79916
4+
* gcc.target/powerpc/pr79916.c: New.
5+
16
2018-04-13 Jakub Jelinek <[email protected]>
27

38
PR rtl-optimization/85393

0 commit comments

Comments
 (0)