Remove redundant fixed_regs tests
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 10 Sep 2019 18:56:59 +0000 (18:56 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 10 Sep 2019 18:56:59 +0000 (18:56 +0000)
This patch removes redundant fixed_regs tests in things like:

  !fixed_regs[i] && !call_used_or_fixed_reg_p (i)

2019-09-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/alpha/alpha.c (alpha_compute_frame_layout): Remove redundant
fixed_regs test.
* config/bpf/bpf.c (bpf_compute_frame_layout, bpf_expand_prologue)
(bpf_expand_epilogue): Likewise.
* config/c6x/c6x.c (c6x_save_reg): Likewise.
* config/ft32/ft32.c (ft32_expand_prologue): Likewise.
(ft32_expand_epilogue): Likewise.
* config/i386/i386.c (ix86_save_reg): Likewise.
* config/moxie/moxie.c (moxie_expand_prologue): Likewise.
(moxie_expand_epilogue): Likewise.
* config/tilegx/tilegx.c (need_to_save_reg): Likewise.
* config/tilepro/tilepro.c (need_to_save_reg): Likewise.
* config/xtensa/xtensa.c (xtensa_call_save_reg): Likewise.

From-SVN: r275603

gcc/ChangeLog
gcc/config/alpha/alpha.c
gcc/config/bpf/bpf.c
gcc/config/c6x/c6x.c
gcc/config/ft32/ft32.c
gcc/config/i386/i386.c
gcc/config/moxie/moxie.c
gcc/config/tilegx/tilegx.c
gcc/config/tilepro/tilepro.c
gcc/config/xtensa/xtensa.c

index 099652b4e3c6be55f5c53971295cdc6d2d7e72c1..86aa67688979d921ad75900d1faa91b5b7f9d2af 100644 (file)
@@ -1,3 +1,19 @@
+2019-09-10  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/alpha/alpha.c (alpha_compute_frame_layout): Remove redundant
+       fixed_regs test.
+       * config/bpf/bpf.c (bpf_compute_frame_layout, bpf_expand_prologue)
+       (bpf_expand_epilogue): Likewise.
+       * config/c6x/c6x.c (c6x_save_reg): Likewise.
+       * config/ft32/ft32.c (ft32_expand_prologue): Likewise.
+       (ft32_expand_epilogue): Likewise.
+       * config/i386/i386.c (ix86_save_reg): Likewise.
+       * config/moxie/moxie.c (moxie_expand_prologue): Likewise.
+       (moxie_expand_epilogue): Likewise.
+       * config/tilegx/tilegx.c (need_to_save_reg): Likewise.
+       * config/tilepro/tilepro.c (need_to_save_reg): Likewise.
+       * config/xtensa/xtensa.c (xtensa_call_save_reg): Likewise.
+
 2019-09-10  Richard Sandiford  <richard.sandiford@arm.com>
 
        * hard-reg-set.h (call_used_or_fixed_reg_p): New macro.
index 5c07b9530fd29615b6a041f7f5b51a0f198c48bc..f01305b3c1a64faa2e299add7c9bc384f11bc696 100644 (file)
@@ -7225,7 +7225,7 @@ alpha_compute_frame_layout (void)
 
       /* One for every register we have to save.  */
       for (unsigned i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-       if (! fixed_regs[i] && ! call_used_or_fixed_reg_p (i)
+       if (! call_used_or_fixed_reg_p (i)
            && df_regs_ever_live_p (i) && i != REG_RA)
          sa_mask |= HOST_WIDE_INT_1U << i;
 
index 6e57b0066b01c4bd31a2d210a5cb818d91eace16..0fe80ce58aca94b5b95aad310e08bea9ff4d90ef 100644 (file)
@@ -271,8 +271,7 @@ bpf_compute_frame_layout (void)
      the current function.  There is no need to round up, since the
      registers are all 8 bytes wide.  */
   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-    if ((!fixed_regs[regno]
-        && df_regs_ever_live_p (regno)
+    if ((df_regs_ever_live_p (regno)
         && !call_used_or_fixed_reg_p (regno))
        || (cfun->calls_alloca
            && regno == STACK_POINTER_REGNUM))
@@ -312,8 +311,7 @@ bpf_expand_prologue (void)
      right after the local variables.  */
   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
     {
-      if ((!fixed_regs[regno]
-          && df_regs_ever_live_p (regno)
+      if ((df_regs_ever_live_p (regno)
           && !call_used_or_fixed_reg_p (regno))
          || (cfun->calls_alloca
              && regno == STACK_POINTER_REGNUM))
@@ -372,8 +370,7 @@ bpf_expand_epilogue (void)
   /* Restore callee-saved hard registes from the stack.  */
   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
     {
-      if ((!fixed_regs[regno]
-          && df_regs_ever_live_p (regno)
+      if ((df_regs_ever_live_p (regno)
           && !call_used_or_fixed_reg_p (regno))
          || (cfun->calls_alloca
              && regno == STACK_POINTER_REGNUM))
index 7d1c2f7516ebcc2a92a07d1e603a52819b95b670..e593273bbf5e9d17ce09d0a33d2ad5c504b1b33c 100644 (file)
@@ -2532,8 +2532,7 @@ static int
 c6x_save_reg (unsigned int regno)
 {
   return ((df_regs_ever_live_p (regno)
-          && !call_used_or_fixed_reg_p (regno)
-          && !fixed_regs[regno])
+          && !call_used_or_fixed_reg_p (regno))
          || (regno == RETURN_ADDR_REGNO
              && (df_regs_ever_live_p (regno)
                  || !crtl->is_leaf))
index 3361df13249d2f2a1cef3494116745796deb5237..840882f63441830869e148b2063b4946abd1ad84 100644 (file)
@@ -475,7 +475,7 @@ ft32_expand_prologue (void)
     {
       for (regno = FIRST_PSEUDO_REGISTER; regno-- > 0;)
        {
-         if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno)
+         if (!call_used_or_fixed_reg_p (regno)
              && df_regs_ever_live_p (regno))
            {
              rtx preg = gen_rtx_REG (Pmode, regno);
@@ -488,7 +488,7 @@ ft32_expand_prologue (void)
     {
       for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
        {
-         if (!fixed_regs[regno] && df_regs_ever_live_p (regno)
+         if (df_regs_ever_live_p (regno)
              && !call_used_or_fixed_reg_p (regno))
            {
              insn = emit_insn (gen_movsi_push (gen_rtx_REG (Pmode, regno)));
@@ -554,7 +554,7 @@ ft32_expand_epilogue (void)
     {
       for (regno = FIRST_PSEUDO_REGISTER; regno-- > 0;)
         {
-          if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno)
+          if (!call_used_or_fixed_reg_p (regno)
               && df_regs_ever_live_p (regno))
             {
               rtx preg = gen_rtx_REG (Pmode, regno);
index 7525b9d2a43518bbf071169bb4dde09722ba59b9..9a87413ee1e18bcd428e63505207a935aeb1e521 100644 (file)
@@ -5666,7 +5666,6 @@ ix86_save_reg (unsigned int regno, bool maybe_eh_return, bool ignore_outlined)
 
   return (df_regs_ever_live_p (regno)
          && !call_used_or_fixed_reg_p (regno)
-         && !fixed_regs[regno]
          && (regno != HARD_FRAME_POINTER_REGNUM || !frame_pointer_needed));
 }
 
index aa5948ea467d58129e3dc90631a5e267e91bb05a..fa4ed3ff40d01bdb3b542eadbd6a97243d7a8360 100644 (file)
@@ -288,8 +288,7 @@ moxie_expand_prologue (void)
   /* Save callee-saved registers.  */
   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
     {
-      if (!fixed_regs[regno]
-         && df_regs_ever_live_p (regno)
+      if (df_regs_ever_live_p (regno)
          && !call_used_or_fixed_reg_p (regno))
        {
          insn = emit_insn (gen_movsi_push (gen_rtx_REG (Pmode, regno)));
@@ -351,7 +350,7 @@ moxie_expand_epilogue (void)
          emit_insn (gen_addsi3 (reg, reg, hard_frame_pointer_rtx));
        }
       for (regno = FIRST_PSEUDO_REGISTER; regno-- > 0; )
-       if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno)
+       if (!call_used_or_fixed_reg_p (regno)
            && df_regs_ever_live_p (regno))
          {
            rtx preg = gen_rtx_REG (Pmode, regno);
index 66a0ba51ff1093bc35984335c9d409edc612e68e..f2ea9bb9b0f6562f70614f4020cc09bb843309b3 100644 (file)
@@ -3660,7 +3660,7 @@ tilegx_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
 static bool
 need_to_save_reg (unsigned int regno)
 {
-  if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno)
+  if (!call_used_or_fixed_reg_p (regno)
       && df_regs_ever_live_p (regno))
     return true;
 
index ff014280ee82dbdcb5f5a8e447c0243f175f31dc..a1d59b19a5e3c77174e4e5d2634b317238ff1d8a 100644 (file)
@@ -3202,7 +3202,7 @@ tilepro_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
 static bool
 need_to_save_reg (unsigned int regno)
 {
-  if (!fixed_regs[regno] && !call_used_or_fixed_reg_p (regno)
+  if (!call_used_or_fixed_reg_p (regno)
       && df_regs_ever_live_p (regno))
     return true;
 
index 822c21597837e8838b3b50ac9bdca7637d3164ae..3c129fdca1d8f03a3e457be470bdfa2f21804c21 100644 (file)
@@ -2686,8 +2686,7 @@ xtensa_call_save_reg(int regno)
   if (crtl->calls_eh_return && regno >= 2 && regno < 4)
     return true;
 
-  return !fixed_regs[regno] && !call_used_or_fixed_reg_p (regno) &&
-    df_regs_ever_live_p (regno);
+  return !call_used_or_fixed_reg_p (regno) && df_regs_ever_live_p (regno);
 }
 
 /* Return the bytes needed to compute the frame pointer from the current