aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKwok Cheung Yeung <kcy@codesourcery.com>2019-11-14 23:37:13 +0000
committerKwok Cheung Yeung <kcy@gcc.gnu.org>2019-11-14 23:37:13 +0000
commit1a4ec3250596b03e1b2edcfbc9d903c1f189f077 (patch)
treee398cece2b071a15efc81d1904e88af445b4bac3
parentf674b4a72ad737d04807cd3d6c8270acba2e460b (diff)
downloadgcc-1a4ec3250596b03e1b2edcfbc9d903c1f189f077.zip
gcc-1a4ec3250596b03e1b2edcfbc9d903c1f189f077.tar.gz
gcc-1a4ec3250596b03e1b2edcfbc9d903c1f189f077.tar.bz2
Check suitability of spill register for mode
2019-11-14 Kwok Cheung Yeung <kcy@codesourcery.com> gcc/ * lra-spills.c (assign_spill_hard_regs): Check that the spill register is suitable for the mode. From-SVN: r278267
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/lra-spills.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 240bda5..a811edb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2019-11-14 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * lra-spills.c (assign_spill_hard_regs): Check that the spill
+ register is suitable for the mode.
+
2019-11-14 Andrew MacLeod <amacleod@redhat.com>
* range-op.h (range_operator::fold_range): Return a bool.
diff --git a/gcc/lra-spills.c b/gcc/lra-spills.c
index 54f76cc..8fbd3a8 100644
--- a/gcc/lra-spills.c
+++ b/gcc/lra-spills.c
@@ -283,7 +283,8 @@ assign_spill_hard_regs (int *pseudo_regnos, int n)
for (k = 0; k < spill_class_size; k++)
{
hard_regno = ira_class_hard_regs[spill_class][k];
- if (TEST_HARD_REG_BIT (eliminable_regset, hard_regno))
+ if (TEST_HARD_REG_BIT (eliminable_regset, hard_regno)
+ || !targetm.hard_regno_mode_ok (hard_regno, mode))
continue;
if (! overlaps_hard_reg_set_p (conflict_hard_regs, mode, hard_regno))
break;