aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-09-12 13:28:37 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-09-12 13:28:37 +0000
commitc1b52c0ef6eeb91b5326eee18bb2652e3f732162 (patch)
treec04b3abede6f4595566e4d3e30cd4ddcc6d6aa53
parent4edd6298d853890dca6a30cfdf209e3e89a2a533 (diff)
downloadgcc-c1b52c0ef6eeb91b5326eee18bb2652e3f732162.zip
gcc-c1b52c0ef6eeb91b5326eee18bb2652e3f732162.tar.gz
gcc-c1b52c0ef6eeb91b5326eee18bb2652e3f732162.tar.bz2
Make more use of in_hard_reg_set_p
An upcoming patch will convert hard_regno_nregs into an inline function, which in turn allows hard_regno_nregs to be used as the name of a targetm field. This patch rewrites a use that can use in_hard_reg_set_p instead. 2017-09-12 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * ira-costs.c (record_operand_costs): Use in_hard_reg_set_p instead of hard_regno_nregs. From-SVN: r252013
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ira-costs.c17
2 files changed, 9 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1652e72..cc2e3ee 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2017-09-12 Richard Sandiford <richard.sandiford@linaro.org>
+ * ira-costs.c (record_operand_costs): Use in_hard_reg_set_p
+ instead of hard_regno_nregs.
+
+2017-09-12 Richard Sandiford <richard.sandiford@linaro.org>
+
* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use
end_hard_regno instead of hard_regno_nregs.
* config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 187802f..714bdbd 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -1386,7 +1386,7 @@ record_operand_costs (rtx_insn *insn, enum reg_class *pref)
cost_classes_t cost_classes_ptr = regno_cost_classes[regno];
enum reg_class *cost_classes = cost_classes_ptr->classes;
reg_class_t rclass;
- int k, nr;
+ int k;
i = regno == (int) REGNO (src) ? 1 : 0;
for (k = cost_classes_ptr->num - 1; k >= 0; k--)
@@ -1398,18 +1398,9 @@ record_operand_costs (rtx_insn *insn, enum reg_class *pref)
{
if (reg_class_size[rclass] == 1)
op_costs[i]->cost[k] = -frequency;
- else
- {
- for (nr = 0;
- nr < hard_regno_nregs[other_regno][mode];
- nr++)
- if (! TEST_HARD_REG_BIT (reg_class_contents[rclass],
- other_regno + nr))
- break;
-
- if (nr == hard_regno_nregs[other_regno][mode])
- op_costs[i]->cost[k] = -frequency;
- }
+ else if (in_hard_reg_set_p (reg_class_contents[rclass],
+ mode, other_regno))
+ op_costs[i]->cost[k] = -frequency;
}
}
}