aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog17
-rw-r--r--gcc/bt-load.c2
-rw-r--r--gcc/caller-save.c2
-rw-r--r--gcc/combine.c8
-rw-r--r--gcc/cse.c6
-rw-r--r--gcc/df-scan.c2
-rw-r--r--gcc/postreload-gcse.c4
-rw-r--r--gcc/reg-stack.c2
-rw-r--r--gcc/regs.h8
-rw-r--r--gcc/reload.c2
-rw-r--r--gcc/resource.c2
-rw-r--r--gcc/rtl.h7
-rw-r--r--gcc/rtlanal.c4
13 files changed, 41 insertions, 25 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 92e2bd4..1cb488e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,22 @@
2015-05-19 Richard Sandiford <richard.sandiford@arm.com>
+ * regs.h (END_HARD_REGNO): Delete.
+ (END_REGNO): Move to...
+ * rtl.h: ...here.
+ * bt-load.c (note_btr_set): Use END_REGNO instead of END_HARD_REGNO.
+ * caller-save.c (mark_set_regs): Likewise.
+ * combine.c (move_deaths, distribute_notes): Likewise.
+ * cse.c (invalidate, invalidate_for_call): Likewise.
+ * df-scan.c (df_ref_record): Likewise.
+ * postreload-gcse.c (reg_changed_after_insn_p): Likewise.
+ (record_last_reg_set_info): Likewise.
+ * reg-stack.c (convert_regs_exit): Likewise.
+ * reload.c (reg_overlap_mentioned_for_reload_p): Likewise.
+ * resource.c (update_live_status): Likewise.
+ * rtlanal.c (find_reg_fusage, find_regno_fusage): Likewise.
+
+2015-05-19 Richard Sandiford <richard.sandiford@arm.com>
+
* rtl.h (reg_info): Add an nregs field.
(REG_NREGS): Use it.
(SET_REGNO_RAW): Delete.
diff --git a/gcc/bt-load.c b/gcc/bt-load.c
index c028281..fe64661 100644
--- a/gcc/bt-load.c
+++ b/gcc/bt-load.c
@@ -443,7 +443,7 @@ note_btr_set (rtx dest, const_rtx set ATTRIBUTE_UNUSED, void *data)
if (!REG_P (dest))
return;
regno = REGNO (dest);
- end_regno = END_HARD_REGNO (dest);
+ end_regno = END_REGNO (dest);
for (; regno < end_regno; regno++)
if (TEST_HARD_REG_BIT (all_btrs, regno))
{
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index 2cb77e6..673a470 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -992,7 +992,7 @@ mark_set_regs (rtx reg, const_rtx setter ATTRIBUTE_UNUSED, void *data)
&& REGNO (reg) < FIRST_PSEUDO_REGISTER)
{
regno = REGNO (reg);
- endregno = END_HARD_REGNO (reg);
+ endregno = END_REGNO (reg);
}
else
return;
diff --git a/gcc/combine.c b/gcc/combine.c
index 4ea450a..a90849e 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -13454,8 +13454,8 @@ move_deaths (rtx x, rtx maybe_kill_insn, int from_luid, rtx_insn *to_insn,
> GET_MODE_SIZE (GET_MODE (x))))
{
unsigned int deadregno = REGNO (XEXP (note, 0));
- unsigned int deadend = END_HARD_REGNO (XEXP (note, 0));
- unsigned int ourend = END_HARD_REGNO (x);
+ unsigned int deadend = END_REGNO (XEXP (note, 0));
+ unsigned int ourend = END_REGNO (x);
unsigned int i;
for (i = deadregno; i < deadend; i++)
@@ -13475,7 +13475,7 @@ move_deaths (rtx x, rtx maybe_kill_insn, int from_luid, rtx_insn *to_insn,
&& regno < FIRST_PSEUDO_REGISTER
&& REG_NREGS (x) > 1)
{
- unsigned int ourend = END_HARD_REGNO (x);
+ unsigned int ourend = END_REGNO (x);
unsigned int i, offset;
rtx oldnotes = 0;
@@ -14070,7 +14070,7 @@ distribute_notes (rtx notes, rtx_insn *from_insn, rtx_insn *i3, rtx_insn *i2,
if (place && REG_NREGS (XEXP (note, 0)) > 1)
{
- unsigned int endregno = END_HARD_REGNO (XEXP (note, 0));
+ unsigned int endregno = END_REGNO (XEXP (note, 0));
bool all_used = true;
unsigned int i;
diff --git a/gcc/cse.c b/gcc/cse.c
index fcfcd3d..aa65b1e 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -1894,7 +1894,7 @@ invalidate (rtx x, machine_mode full_mode)
{
HOST_WIDE_INT in_table
= TEST_HARD_REG_BIT (hard_regs_in_table, regno);
- unsigned int endregno = END_HARD_REGNO (x);
+ unsigned int endregno = END_REGNO (x);
unsigned int tregno, tendregno, rn;
struct table_elt *p, *next;
@@ -1920,7 +1920,7 @@ invalidate (rtx x, machine_mode full_mode)
continue;
tregno = REGNO (p->exp);
- tendregno = END_HARD_REGNO (p->exp);
+ tendregno = END_REGNO (p->exp);
if (tendregno > regno && tregno < endregno)
remove_from_table (p, hash);
}
@@ -2139,7 +2139,7 @@ invalidate_for_call (void)
continue;
regno = REGNO (p->exp);
- endregno = END_HARD_REGNO (p->exp);
+ endregno = END_REGNO (p->exp);
for (i = regno; i < endregno; i++)
if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index 3aec13c..7aaa0f9 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -2624,7 +2624,7 @@ df_ref_record (enum df_ref_class cl,
endregno = regno + subreg_nregs (reg);
}
else
- endregno = END_HARD_REGNO (reg);
+ endregno = END_REGNO (reg);
/* If this is a multiword hardreg, we create some extra
datastructures that will enable us to easily build REG_DEAD
diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c
index 9014d69..8188767 100644
--- a/gcc/postreload-gcse.c
+++ b/gcc/postreload-gcse.c
@@ -551,7 +551,7 @@ reg_changed_after_insn_p (rtx x, int cuid)
unsigned int regno, end_regno;
regno = REGNO (x);
- end_regno = END_HARD_REGNO (x);
+ end_regno = END_REGNO (x);
do
if (reg_avail_info[regno] > cuid)
return true;
@@ -720,7 +720,7 @@ record_last_reg_set_info (rtx_insn *insn, rtx reg)
unsigned int regno, end_regno;
regno = REGNO (reg);
- end_regno = END_HARD_REGNO (reg);
+ end_regno = END_REGNO (reg);
do
reg_avail_info[regno] = INSN_CUID (insn);
while (++regno < end_regno);
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index b6ed778..5c8b83b 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -2677,7 +2677,7 @@ convert_regs_exit (void)
if (retvalue)
{
value_reg_low = REGNO (retvalue);
- value_reg_high = END_HARD_REGNO (retvalue) - 1;
+ value_reg_high = END_REGNO (retvalue) - 1;
}
output_stack = &BLOCK_INFO (EXIT_BLOCK_PTR_FOR_FN (cfun))->stack_in;
diff --git a/gcc/regs.h b/gcc/regs.h
index a1374d1..023d631 100644
--- a/gcc/regs.h
+++ b/gcc/regs.h
@@ -286,14 +286,6 @@ end_hard_regno (machine_mode mode, unsigned int regno)
return regno + hard_regno_nregs[regno][(int) mode];
}
-/* Likewise for hard register X. */
-
-#define END_HARD_REGNO(X) END_REGNO (X)
-
-/* Likewise for hard or pseudo register X. */
-
-#define END_REGNO(X) (REGNO (X) + REG_NREGS (X))
-
/* Add to REGS all the registers required to store a value of mode MODE
in register REGNO. */
diff --git a/gcc/reload.c b/gcc/reload.c
index a3edb15..f2482fc 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -6590,7 +6590,7 @@ reg_overlap_mentioned_for_reload_p (rtx x, rtx in)
return 0;
}
- endregno = END_HARD_REGNO (x);
+ endregno = END_REGNO (x);
return refers_to_regno_for_reload_p (regno, endregno, in, (rtx*) 0);
}
diff --git a/gcc/resource.c b/gcc/resource.c
index ba9de12..a9c0d0a 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -115,7 +115,7 @@ update_live_status (rtx dest, const_rtx x, void *data ATTRIBUTE_UNUSED)
else
{
first_regno = REGNO (dest);
- last_regno = END_HARD_REGNO (dest);
+ last_regno = END_REGNO (dest);
}
if (GET_CODE (x) == CLOBBER)
diff --git a/gcc/rtl.h b/gcc/rtl.h
index e7d06c2..fb7b641 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1733,6 +1733,13 @@ rhs_regno (const_rtx x)
return REG_CHECK (x)->regno;
}
+/* Return the final register in REG X plus one. */
+static inline unsigned int
+END_REGNO (const_rtx x)
+{
+ return REGNO (x) + REG_NREGS (x);
+}
+
/* Change the REGNO and REG_NREGS of REG X to the specified values,
bypassing the df machinery. */
static inline void
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 68d99319..1b59e32 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -2018,7 +2018,7 @@ find_reg_fusage (const_rtx insn, enum rtx_code code, const_rtx datum)
if (regno < FIRST_PSEUDO_REGISTER)
{
- unsigned int end_regno = END_HARD_REGNO (datum);
+ unsigned int end_regno = END_REGNO (datum);
unsigned int i;
for (i = regno; i < end_regno; i++)
@@ -2052,7 +2052,7 @@ find_regno_fusage (const_rtx insn, enum rtx_code code, unsigned int regno)
if (GET_CODE (op = XEXP (link, 0)) == code
&& REG_P (reg = XEXP (op, 0))
&& REGNO (reg) <= regno
- && END_HARD_REGNO (reg) > regno)
+ && END_REGNO (reg) > regno)
return 1;
}