This makes recorded reg base values private to alias.cc, its computation
should go away but find_base_term can be used to cross-check that
we don't regress when only having MEM_BASE eventually.

Selective scheduling wouldn't need to avoid renaming regs with a base
value anymore, so this removes this only outside use.

        * alias.cc (get_reg_base_value): Make static.
        * rtl.h (get_reg_base_value): Remove.
        * sel-sched.cc (init_regs_for_mode): Do not worry about
        REG_BASE_VALUE when recording regs for renaming.
---
 gcc/alias.cc     | 2 +-
 gcc/rtl.h        | 1 -
 gcc/sel-sched.cc | 4 ++++
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/gcc/alias.cc b/gcc/alias.cc
index 48633aff699..541994c5047 100644
--- a/gcc/alias.cc
+++ b/gcc/alias.cc
@@ -1656,7 +1656,7 @@ record_set (rtx dest, const_rtx set, void *data 
ATTRIBUTE_UNUSED)
 
 /* Return REG_BASE_VALUE for REGNO.  Selective scheduler uses this to avoid
    using hard registers with non-null REG_BASE_VALUE for renaming.  */
-rtx
+static rtx
 get_reg_base_value (unsigned int regno)
 {
   return (*reg_base_value)[regno];
diff --git a/gcc/rtl.h b/gcc/rtl.h
index c84334cb945..3fcaaec49e4 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -4496,7 +4496,6 @@ extern bool may_be_sp_based_p (rtx);
 extern rtx gen_hard_reg_clobber (machine_mode, unsigned int);
 extern rtx get_reg_known_value (unsigned int);
 extern bool get_reg_known_equiv_p (unsigned int);
-extern rtx get_reg_base_value (unsigned int);
 extern rtx extract_mem_from_operand (rtx);
 
 #ifdef STACK_REGS
diff --git a/gcc/sel-sched.cc b/gcc/sel-sched.cc
index 17b71127960..77ba100023d 100644
--- a/gcc/sel-sched.cc
+++ b/gcc/sel-sched.cc
@@ -1082,9 +1082,13 @@ init_regs_for_mode (machine_mode mode)
             /* Can't use regs which aren't saved by
                the prologue.  */
             || !TEST_HARD_REG_BIT (sel_hrd.regs_ever_used, cur_reg + i)
+           /* It's fine to elide this since REG_BASE_VALUE will go away
+              and the info is in the MEMs itself.  */
+#if 0
            /* Can't use regs with non-null REG_BASE_VALUE, because adjusting
               it affects aliasing globally and invalidates all AV sets.  */
            || get_reg_base_value (cur_reg + i)
+#endif
 #ifdef LEAF_REGISTERS
             /* We can't use a non-leaf register if we're in a
                leaf function.  */
-- 
2.35.3

Reply via email to