summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2011-03-18 17:05:27 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2011-03-18 17:05:27 +0000
commit7da2097899c119559007977e2df3f3879e1b5ad8 (patch)
tree61a20d44630cbe323bdbc2912239f7d1d11835e4
parent34cb2f5e8a7b8fb8463309dedb796748dd10ce2e (diff)
downloadgcc-7da2097899c119559007977e2df3f3879e1b5ad8.tar.gz
* ira-color.c (assign_hard_reg): Honor LOCAL_REGNO in cost
computation for prologue/epilogue. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171154 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/ira-color.c3
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 16fdd22aa16..200cce84e61 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-03-18 Georg-Johann Lay <avr@gjlay.de>
+
+ * ira-color.c (assign_hard_reg): Honor LOCAL_REGNO in cost
+ computation for prologue/epilogue.
+
2011-03-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* Makefile.in (check-consistency): Remove.
@@ -35,7 +40,7 @@
(--with-plugin-ld): Document.
* doc/invoke.texi (-fuse-linker-plugin): Clarify.
-2011-03-16 Andrew Pinski <pinskia@gmail.com>
+2011-03-18 Andrew Pinski <pinskia@gmail.com>
PR middle-end/47790
* expr.c (optimize_bitfield_assignment_op): Revamp to work
diff --git a/gcc/ira-color.c b/gcc/ira-color.c
index 5c98ef91c2c..6024f7d9563 100644
--- a/gcc/ira-color.c
+++ b/gcc/ira-color.c
@@ -591,7 +591,8 @@ assign_hard_reg (ira_allocno_t a, bool retry_p)
full_cost = full_costs[i];
#ifndef HONOR_REG_ALLOC_ORDER
if (! allocated_hardreg_p[hard_regno]
- && ira_hard_reg_not_in_set_p (hard_regno, mode, call_used_reg_set))
+ && ira_hard_reg_not_in_set_p (hard_regno, mode, call_used_reg_set)
+ && !LOCAL_REGNO (hard_regno))
/* We need to save/restore the hard register in
epilogue/prologue. Therefore we increase the cost. */
{