diff options
-rw-r--r-- | gcc/ChangeLog | 17 | ||||
-rw-r--r-- | gcc/bt-load.c | 2 | ||||
-rw-r--r-- | gcc/caller-save.c | 2 | ||||
-rw-r--r-- | gcc/combine.c | 8 | ||||
-rw-r--r-- | gcc/cse.c | 6 | ||||
-rw-r--r-- | gcc/df-scan.c | 2 | ||||
-rw-r--r-- | gcc/postreload-gcse.c | 4 | ||||
-rw-r--r-- | gcc/reg-stack.c | 2 | ||||
-rw-r--r-- | gcc/regs.h | 8 | ||||
-rw-r--r-- | gcc/reload.c | 2 | ||||
-rw-r--r-- | gcc/resource.c | 2 | ||||
-rw-r--r-- | gcc/rtl.h | 7 | ||||
-rw-r--r-- | gcc/rtlanal.c | 4 |
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; @@ -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; @@ -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) @@ -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; } |