tm.texi.in (INITIAL_FRAME_POINTER_OFFSET): Remove.
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Fri, 9 Sep 2016 23:08:54 +0000 (23:08 +0000)
committerBernd Edlinger <edlinger@gcc.gnu.org>
Fri, 9 Sep 2016 23:08:54 +0000 (23:08 +0000)
2016-09-10  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * doc/tm.texi.in (INITIAL_FRAME_POINTER_OFFSET): Remove.
        (ELIMINABLE_REGS, TARGET_CAN_ELIMINATE,
        INITIAL_ELIMINATION_OFFSET) : Update documentation.
        * target.def (frame_pointer_required, can_eliminate): Likewise.
        * doc/tm.texi: Regenerated.
        * builtins.c (expand_builtin_setjmp_receiver): Remove #ifdef
        ELIMINABLE_REGS.
        * df-scan.c (df_hard_reg_init): Likewise.
        * ira.c (ira_setup_eliminable_regset): Likewise.
        * lra-eliminations.c (reg_eliminate_1, (update_reg_eliminate,
        init_elim_table): Likewise.
        * reload1.c (reg_eliminate_1, verify_initial_elim_offsets,
        set_initial_elim_offsets, update_eliminables,
        init_elim_table): Likewise.
        * rtlanal.c (get_initial_register_offset): Likewise.
        * config/ft32/ft32.h (INITIAL_FRAME_POINTER_OFFSET): Remove.
        * config/m32r/m32r.h (INITIAL_FRAME_POINTER_OFFSET): Likewise.
        * config/moxie/moxie.h (INITIAL_FRAME_POINTER_OFFSET): Likewise.
        * config/vax/vax.h (INITIAL_FRAME_POINTER_OFFSET): Likewise.
        * config/fr30/fr30.h: Fix comment.
        * config/frv/frv.c: Likewise.
        * config/frv/frv.h: Likewise.
        * config/ft32/ft32.h: Likewise.
        * config/visium/visium.h: Likewise.
        * config/pa/pa64-linux.h: Likewise.
        * config/v850/v850.h: Likewise.
        * config/cris/cris.c: Likewise.
        * config/ia64/ia64.h: Likewise.
        * config/moxie/moxie.h: Likewise.
        * config/m32r/m32r.h: Likewise.

From-SVN: r240058

22 files changed:
gcc/ChangeLog
gcc/builtins.c
gcc/config/cris/cris.c
gcc/config/fr30/fr30.h
gcc/config/frv/frv.c
gcc/config/frv/frv.h
gcc/config/ft32/ft32.h
gcc/config/ia64/ia64.h
gcc/config/m32r/m32r.h
gcc/config/moxie/moxie.h
gcc/config/pa/pa64-linux.h
gcc/config/v850/v850.h
gcc/config/vax/vax.h
gcc/config/visium/visium.h
gcc/df-scan.c
gcc/doc/tm.texi
gcc/doc/tm.texi.in
gcc/ira.c
gcc/lra-eliminations.c
gcc/reload1.c
gcc/rtlanal.c
gcc/target.def

index 29d329ef080f6c2fdc4e7b195dd019d05f0d4a6f..eb8ad6e5a4ba1cf278dfc01ee647c26f5e091035 100644 (file)
@@ -1,3 +1,36 @@
+2016-09-10  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+       * doc/tm.texi.in (INITIAL_FRAME_POINTER_OFFSET): Remove.
+       (ELIMINABLE_REGS, TARGET_CAN_ELIMINATE,
+       INITIAL_ELIMINATION_OFFSET) : Update documentation.
+       * target.def (frame_pointer_required, can_eliminate): Likewise.
+       * doc/tm.texi: Regenerated.
+       * builtins.c (expand_builtin_setjmp_receiver): Remove #ifdef
+       ELIMINABLE_REGS.
+       * df-scan.c (df_hard_reg_init): Likewise.
+       * ira.c (ira_setup_eliminable_regset): Likewise.
+       * lra-eliminations.c (reg_eliminate_1, (update_reg_eliminate,
+       init_elim_table): Likewise.
+       * reload1.c (reg_eliminate_1, verify_initial_elim_offsets,
+       set_initial_elim_offsets, update_eliminables,
+       init_elim_table): Likewise.
+       * rtlanal.c (get_initial_register_offset): Likewise.
+       * config/ft32/ft32.h (INITIAL_FRAME_POINTER_OFFSET): Remove.
+       * config/m32r/m32r.h (INITIAL_FRAME_POINTER_OFFSET): Likewise.
+       * config/moxie/moxie.h (INITIAL_FRAME_POINTER_OFFSET): Likewise.
+       * config/vax/vax.h (INITIAL_FRAME_POINTER_OFFSET): Likewise.
+       * config/fr30/fr30.h: Fix comment.
+       * config/frv/frv.c: Likewise.
+       * config/frv/frv.h: Likewise.
+       * config/ft32/ft32.h: Likewise.
+       * config/visium/visium.h: Likewise.
+       * config/pa/pa64-linux.h: Likewise.
+       * config/v850/v850.h: Likewise.
+       * config/cris/cris.c: Likewise.
+       * config/ia64/ia64.h: Likewise.
+       * config/moxie/moxie.h: Likewise.
+       * config/m32r/m32r.h: Likewise.
+
 2016-09-10  Alexander Ivchenko  <alexander.ivchenko@intel.com>
 
        PR target/77267
index 1073e35b17b1bc1f6974c71c940bd9d82bbbfc0f..4a2a398744b8b006f6dac5dd179f307fcad3e0ef 100644 (file)
@@ -862,7 +862,6 @@ expand_builtin_setjmp_receiver (rtx receiver_label)
 
   if (!HARD_FRAME_POINTER_IS_ARG_POINTER && fixed_regs[ARG_POINTER_REGNUM])
     {
-#ifdef ELIMINABLE_REGS
       /* If the argument pointer can be eliminated in favor of the
         frame pointer, we don't need to restore it.  We assume here
         that if such an elimination is present, it can always be used.
@@ -877,7 +876,6 @@ expand_builtin_setjmp_receiver (rtx receiver_label)
          break;
 
       if (i == ARRAY_SIZE (elim_regs))
-#endif
        {
          /* Now restore our arg pointer from the address at which it
             was saved in our stack frame.  */
index 971d07fb12ad0de74315523ba00fd7ee308ad0af..7a2ac81f8ffc8977dead8995d72a9fd64c62f8a5 100644 (file)
@@ -1282,8 +1282,7 @@ cris_return_address_on_stack_for_return (void)
     : cris_return_address_on_stack ();
 }
 
-/* This used to be the INITIAL_FRAME_POINTER_OFFSET worker; now only
-   handles FP -> SP elimination offset.  */
+/* This handles FP -> SP elimination offset.  */
 
 static int
 cris_initial_frame_pointer_offset (void)
index 51a05db9c2d9de131fe6cb36ccf0ddb3786bdd44..82366e35415100cbcc3ec04ee64602131ce3cc15 100644 (file)
@@ -460,9 +460,8 @@ enum reg_class
   {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM} \
 }
 
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It specifies the
-   initial difference between the specified pair of registers.  This macro must
-   be defined if `ELIMINABLE_REGS' is defined.  */
+/* This macro returns the initial difference between the specified pair
+   of registers.  */
 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)                   \
      (OFFSET) = fr30_compute_frame_size (FROM, TO)
 
index 957ff0390a0fb14e72206d982721f40509e834cc..4bfa8273aa31e87f4012a12b7555177938c7ac05 100644 (file)
@@ -2076,9 +2076,8 @@ frv_can_eliminate (const int from, const int to)
           : true);
 }
 
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It specifies the
-   initial difference between the specified pair of registers.  This macro must
-   be defined if `ELIMINABLE_REGS' is defined.  */
+/* This function returns the initial difference between the specified
+   pair of registers.  */
 
 /* See frv_stack_info for more details on the frv stack frame.  */
 
index 8d41b6aa84a7cd855b8f37e9abf1f9a706dde372..e7f87b1ff8854743d06b3602eeec7807e3ff52a2 100644 (file)
@@ -1197,9 +1197,8 @@ typedef struct frv_stack {
   {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}                         \
 }
 
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It specifies the
-   initial difference between the specified pair of registers.  This macro must
-   be defined if `ELIMINABLE_REGS' is defined.  */
+/* This macro returns the initial difference between the specified pair
+   of registers.  */
 
 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)                   \
   (OFFSET) = frv_initial_elimination_offset (FROM, TO)
index dd40b1de0b665f816c15a5db99ba1595e4071448..6bfd4851fe65e3aa2dad17f2c873deed56cd4f91 100644 (file)
@@ -250,8 +250,6 @@ enum reg_class
    pointer to a smaller address.  */
 #define STACK_GROWS_DOWNWARD 1
 
-#define INITIAL_FRAME_POINTER_OFFSET(DEPTH) (DEPTH) = 0
-
 /* Offset from the frame pointer to the first local variable slot to
    be allocated.  */
 #define STARTING_FRAME_OFFSET 0
@@ -426,10 +424,8 @@ do { \
  {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
 
 
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It
-   specifies the initial difference between the specified pair of
-   registers.  This macro must be defined if `ELIMINABLE_REGS' is
-   defined.  */
+/* This macro returns the initial difference between the specified pair
+   of registers.  */
 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)                    \
   do {                                                                  \
     (OFFSET) = ft32_initial_elimination_offset ((FROM), (TO));            \
index 4e1b7af6ab7bac15f273d72e452f626c622acf5c..daf717b949dc3c671c5c6d1a8aeb72577295e685 100644 (file)
@@ -961,10 +961,8 @@ enum reg_class
   {FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM},                   \
 }
 
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It
-   specifies the initial difference between the specified pair of
-   registers.  This macro must be defined if `ELIMINABLE_REGS' is
-   defined.  */
+/* This macro returns the initial difference between the specified pair
+   of registers.  */
 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
   ((OFFSET) = ia64_initial_elimination_offset ((FROM), (TO)))
 \f
index 2ff4a459dc44f8716578965842cbca4e38968c75..cd74cfcf3b5a5f5a38a1a17fe3fe6d4cedea5edb 100644 (file)
@@ -581,15 +581,6 @@ extern enum reg_class m32r_regno_reg_class[FIRST_PSEUDO_REGISTER];
 \f
 /* Eliminating the frame and arg pointers.  */
 
-#if 0
-/* C statement to store the difference between the frame pointer
-   and the stack pointer values immediately after the function prologue.
-   If `ELIMINABLE_REGS' is defined, this macro will be not be used and
-   need not be defined.  */
-#define INITIAL_FRAME_POINTER_OFFSET(VAR) \
-((VAR) = m32r_compute_frame_size (get_frame_size ()))
-#endif
-
 /* If defined, this macro specifies a table of register pairs used to
    eliminate unneeded registers that point into the stack frame.  If
    it is not defined, the only elimination attempted by the compiler
@@ -604,10 +595,8 @@ extern enum reg_class m32r_regno_reg_class[FIRST_PSEUDO_REGISTER];
  { ARG_POINTER_REGNUM,  STACK_POINTER_REGNUM },        \
  { ARG_POINTER_REGNUM,   FRAME_POINTER_REGNUM }}
 
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It
-   specifies the initial difference between the specified pair of
-   registers.  This macro must be defined if `ELIMINABLE_REGS' is
-   defined.  */
+/* This macro returns the initial difference between the specified pair
+   of registers.  */
 
 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)                           \
   do                                                                           \
index b9cb38bf139bac21d901c81987518e5d6a5794e3..204e23c405b9222125347e901e65affc015de16a 100644 (file)
@@ -243,8 +243,6 @@ enum reg_class
    pointer to a smaller address.  */
 #define STACK_GROWS_DOWNWARD 1
 
-#define INITIAL_FRAME_POINTER_OFFSET(DEPTH) (DEPTH) = 0
-
 /* Offset from the frame pointer to the first local variable slot to
    be allocated.  */
 #define STARTING_FRAME_OFFSET 0
@@ -386,10 +384,8 @@ enum reg_class
 {{ FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM },                  \
  { ARG_POINTER_REGNUM,   HARD_FRAME_POINTER_REGNUM }}                  
 
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It
-   specifies the initial difference between the specified pair of
-   registers.  This macro must be defined if `ELIMINABLE_REGS' is
-   defined.  */
+/* This macro returns the initial difference between the specified pair
+   of registers.  */
 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)                   \
   do {                                                                 \
     (OFFSET) = moxie_initial_elimination_offset ((FROM), (TO));                \
index 540bfa64c6c64fd1431efdfdfb193c5a3dddb1f5..4bf1f795c5e579e17c577095754c9b5d956659b5 100644 (file)
@@ -28,10 +28,8 @@ along with GCC; see the file COPYING3.  If not see
   {ARG_POINTER_REGNUM,  FRAME_POINTER_REGNUM},                         \
 }
 
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It
-   specifies the initial difference between the specified pair of
-   registers.  This macro must be defined if `ELIMINABLE_REGS' is
-   defined.  */
+/* This macro returns the initial difference between the specified pair
+   of registers.  */
 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
   do                                                           \
     {                                                          \
index c326df92e696823a5d31bf0669db40d5f266525e..ae5e9ce96e9f3c6416678106ca20e062c97311ed 100644 (file)
@@ -505,10 +505,8 @@ enum reg_class
  { ARG_POINTER_REGNUM,  STACK_POINTER_REGNUM },                        \
  { ARG_POINTER_REGNUM,   HARD_FRAME_POINTER_REGNUM }}                  \
 
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It
-   specifies the initial difference between the specified pair of
-   registers.  This macro must be defined if `ELIMINABLE_REGS' is
-   defined.  */
+/* This macro returns the initial difference between the specified pair
+   of registers.  */
 
 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)                   \
 {                                                                      \
index a381039d0085fba1ab0b3101bfc8d015aac2e4d8..77d9e7f07299baa64dbab385f1685ff8e437c758 100644 (file)
@@ -340,16 +340,6 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_REG_CLASSES };
 
 #define EXIT_IGNORE_STACK 1
 
-/* Store in the variable DEPTH the initial difference between the
-   frame pointer reg contents and the stack pointer reg contents,
-   as of the start of the function body.  This depends on the layout
-   of the fixed parts of the stack frame and on how registers are saved.
-
-   On the VAX, FRAME_POINTER_REQUIRED is always 1, so the definition of this
-   macro doesn't matter.  But it must be defined.  */
-
-#define INITIAL_FRAME_POINTER_OFFSET(DEPTH) (DEPTH) = 0;
-
 /* Length in units of the trampoline for entering a nested function.  */
 
 #define TRAMPOLINE_SIZE 15
index 0f195c07c66597f6b63d879bf3e6f1231e055c7a..f7e3da4c0690320348ea09c23da987790faf3e71 100644 (file)
@@ -963,10 +963,8 @@ enum reg_class
 
 /* `INITIAL_ELIMINATION_OFFSET (FROM-REG, TO-REG, OFFSET-VAR)'
 
-   This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It
-   specifies the initial difference between the specified pair of
-   registers.  This macro must be defined if `ELIMINABLE_REGS' is
-   defined.  */
+   This macro returns the initial difference between the specified pair
+   of registers.  */
 #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
   (OFFSET = visium_initial_elimination_offset (FROM, TO))
 
index 9cd647a32135a8a9e1883e69d41a7fe5ed257f7c..c8dbf8ddb00d4997b6a2f010d62367114573ac99 100644 (file)
@@ -3829,10 +3829,9 @@ static bool initialized = false;
 void
 df_hard_reg_init (void)
 {
-#ifdef ELIMINABLE_REGS
   int i;
   static const struct {const int from, to; } eliminables[] = ELIMINABLE_REGS;
-#endif
+
   if (initialized)
     return;
 
@@ -3840,12 +3839,8 @@ df_hard_reg_init (void)
      mark_used_regs.  */
   CLEAR_HARD_REG_SET (elim_reg_set);
 
-#ifdef ELIMINABLE_REGS
   for (i = 0; i < (int) ARRAY_SIZE (eliminables); i++)
     SET_HARD_REG_BIT (elim_reg_set, eliminables[i].from);
-#else
-  SET_HARD_REG_BIT (elim_reg_set, FRAME_POINTER_REGNUM);
-#endif
 
   initialized = true;
 }
index 586626062435f3718cfae84c6aab3024d08d79d7..98a6a97d158245b2c2f63eb94eb75e426591b828 100644 (file)
@@ -3624,7 +3624,7 @@ pointer.
 In certain cases, the compiler does not know how to produce valid code
 without a frame pointer.  The compiler recognizes those cases and
 automatically gives the function a frame pointer regardless of what
-@code{TARGET_FRAME_POINTER_REQUIRED} returns.  You don't need to worry about
+@code{targetm.frame_pointer_required} returns.  You don't need to worry about
 them.
 
 In a function that does not require a frame pointer, the frame pointer
@@ -3634,25 +3634,9 @@ fixed register.  See @code{FIXED_REGISTERS} for more information.
 Default return value is @code{false}.
 @end deftypefn
 
-@findex get_frame_size
-@defmac INITIAL_FRAME_POINTER_OFFSET (@var{depth-var})
-A C statement to store in the variable @var{depth-var} the difference
-between the frame pointer and the stack pointer values immediately after
-the function prologue.  The value would be computed from information
-such as the result of @code{get_frame_size ()} and the tables of
-registers @code{regs_ever_live} and @code{call_used_regs}.
-
-If @code{ELIMINABLE_REGS} is defined, this macro will be not be used and
-need not be defined.  Otherwise, it must be defined even if
-@code{TARGET_FRAME_POINTER_REQUIRED} always returns true; in that
-case, you may set @var{depth-var} to anything.
-@end defmac
-
 @defmac ELIMINABLE_REGS
-If defined, this macro specifies a table of register pairs used to
-eliminate unneeded registers that point into the stack frame.  If it is not
-defined, the only elimination attempted by the compiler is to replace
-references to the frame pointer with references to the stack pointer.
+This macro specifies a table of register pairs used to eliminate
+unneeded registers that point into the stack frame.
 
 The definition of this macro is a list of structure initializations, each
 of which specifies an original and replacement register.
@@ -3676,21 +3660,20 @@ specified first since that is the preferred elimination.
 @end defmac
 
 @deftypefn {Target Hook} bool TARGET_CAN_ELIMINATE (const int @var{from_reg}, const int @var{to_reg})
-This target hook should returns @code{true} if the compiler is allowed to
+This target hook should return @code{true} if the compiler is allowed to
 try to replace register number @var{from_reg} with register number
-@var{to_reg}.  This target hook need only be defined if @code{ELIMINABLE_REGS}
-is defined, and will usually be @code{true}, since most of the cases
-preventing register elimination are things that the compiler already
+@var{to_reg}.  This target hook will usually be @code{true}, since most of the
+cases preventing register elimination are things that the compiler already
 knows about.
 
 Default return value is @code{true}.
 @end deftypefn
 
 @defmac INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var})
-This macro is similar to @code{INITIAL_FRAME_POINTER_OFFSET}.  It
-specifies the initial difference between the specified pair of
-registers.  This macro must be defined if @code{ELIMINABLE_REGS} is
-defined.
+This macro returns the initial difference between the specified pair
+of registers.  The value would be computed from information
+such as the result of @code{get_frame_size ()} and the tables of
+registers @code{df_regs_ever_live_p} and @code{call_used_regs}.
 @end defmac
 
 @node Stack Arguments
index da133a4b7010533d85d5bb9a850b91e8a80ce1ca..a5714d10583323379317ece82c18130b00af3646 100644 (file)
@@ -3177,25 +3177,9 @@ This is about eliminating the frame pointer and arg pointer.
 
 @hook TARGET_FRAME_POINTER_REQUIRED
 
-@findex get_frame_size
-@defmac INITIAL_FRAME_POINTER_OFFSET (@var{depth-var})
-A C statement to store in the variable @var{depth-var} the difference
-between the frame pointer and the stack pointer values immediately after
-the function prologue.  The value would be computed from information
-such as the result of @code{get_frame_size ()} and the tables of
-registers @code{regs_ever_live} and @code{call_used_regs}.
-
-If @code{ELIMINABLE_REGS} is defined, this macro will be not be used and
-need not be defined.  Otherwise, it must be defined even if
-@code{TARGET_FRAME_POINTER_REQUIRED} always returns true; in that
-case, you may set @var{depth-var} to anything.
-@end defmac
-
 @defmac ELIMINABLE_REGS
-If defined, this macro specifies a table of register pairs used to
-eliminate unneeded registers that point into the stack frame.  If it is not
-defined, the only elimination attempted by the compiler is to replace
-references to the frame pointer with references to the stack pointer.
+This macro specifies a table of register pairs used to eliminate
+unneeded registers that point into the stack frame.
 
 The definition of this macro is a list of structure initializations, each
 of which specifies an original and replacement register.
@@ -3221,10 +3205,10 @@ specified first since that is the preferred elimination.
 @hook TARGET_CAN_ELIMINATE
 
 @defmac INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var})
-This macro is similar to @code{INITIAL_FRAME_POINTER_OFFSET}.  It
-specifies the initial difference between the specified pair of
-registers.  This macro must be defined if @code{ELIMINABLE_REGS} is
-defined.
+This macro returns the initial difference between the specified pair
+of registers.  The value would be computed from information
+such as the result of @code{get_frame_size ()} and the tables of
+registers @code{df_regs_ever_live_p} and @code{call_used_regs}.
 @end defmac
 
 @node Stack Arguments
index f8a59e3cd6475acdfc07e43834c474ff8b4bef86..62612521edb4e08af2f6ad54f29afa2217a18f30 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -2253,10 +2253,9 @@ compute_regs_asm_clobbered (void)
 void
 ira_setup_eliminable_regset (void)
 {
-#ifdef ELIMINABLE_REGS
   int i;
   static const struct {const int from, to; } eliminables[] = ELIMINABLE_REGS;
-#endif
+
   /* FIXME: If EXIT_IGNORE_STACK is set, we will not save and restore
      sp for alloca.  So we can't eliminate the frame pointer in that
      case.  At some point, we should improve this by emitting the
@@ -2292,7 +2291,6 @@ ira_setup_eliminable_regset (void)
 
   /* Build the regset of all eliminable registers and show we can't
      use those that we already know won't be eliminated.  */
-#ifdef ELIMINABLE_REGS
   for (i = 0; i < (int) ARRAY_SIZE (eliminables); i++)
     {
       bool cannot_elim
@@ -2326,19 +2324,6 @@ ira_setup_eliminable_regset (void)
       else
        df_set_regs_ever_live (HARD_FRAME_POINTER_REGNUM, true);
     }
-
-#else
-  if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
-    {
-      SET_HARD_REG_BIT (eliminable_regset, FRAME_POINTER_REGNUM);
-      if (frame_pointer_needed)
-       SET_HARD_REG_BIT (ira_no_alloc_regs, FRAME_POINTER_REGNUM);
-    }
-  else if (frame_pointer_needed)
-    error ("%s cannot be used in asm here", reg_names[FRAME_POINTER_REGNUM]);
-  else
-    df_set_regs_ever_live (FRAME_POINTER_REGNUM, true);
-#endif
 }
 
 \f
index 08cc39011d1f589fd6a713f7975509145e86b47d..1764bd699ce0b7ad98a75f8f18d7f974bad63be8 100644 (file)
@@ -108,15 +108,7 @@ static const struct elim_table_1
   const int to;
 } reg_eliminate_1[] =
 
-/* If a set of eliminable hard registers was specified, define the
-   table from it.  Otherwise, default to the normal case of the frame
-   pointer being replaced by the stack pointer.         */
-
-#ifdef ELIMINABLE_REGS
   ELIMINABLE_REGS;
-#else
-  {{ FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}};
-#endif
 
 #define NUM_ELIMINABLE_REGS ARRAY_SIZE (reg_eliminate_1)
 
@@ -1265,11 +1257,7 @@ update_reg_eliminate (bitmap insns_with_changed_offsets)
            }
        }
 
-#ifdef ELIMINABLE_REGS
       INITIAL_ELIMINATION_OFFSET (ep->from, ep->to, ep->offset);
-#else
-      INITIAL_FRAME_POINTER_OFFSET (ep->offset);
-#endif
     }
   setup_elimination_map ();
   result = false;
@@ -1308,10 +1296,8 @@ static void
 init_elim_table (void)
 {
   struct lra_elim_table *ep;
-#ifdef ELIMINABLE_REGS
   bool value_p;
   const struct elim_table_1 *ep1;
-#endif
 
   if (!reg_eliminate)
     reg_eliminate = XCNEWVEC (struct lra_elim_table, NUM_ELIMINABLE_REGS);
@@ -1320,7 +1306,7 @@ init_elim_table (void)
   /* Initiate member values which will be never changed.  */
   self_elim_table.can_eliminate = self_elim_table.prev_can_eliminate = true;
   self_elim_table.previous_offset = 0;
-#ifdef ELIMINABLE_REGS
+
   for (ep = reg_eliminate, ep1 = reg_eliminate_1;
        ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++, ep1++)
     {
@@ -1334,12 +1320,6 @@ init_elim_table (void)
                           || ! stack_realign_fp)));
       setup_can_eliminate (ep, value_p);
     }
-#else
-  reg_eliminate[0].offset = reg_eliminate[0].previous_offset = 0;
-  reg_eliminate[0].from = reg_eliminate_1[0].from;
-  reg_eliminate[0].to = reg_eliminate_1[0].to;
-  setup_can_eliminate (&reg_eliminate[0], ! frame_pointer_needed);
-#endif
 
   /* Build the FROM and TO REG rtx's.  Note that code in gen_rtx_REG
      will cause, e.g., gen_rtx_REG (Pmode, STACK_POINTER_REGNUM) to
index 2a9a562cbbdb4178e0b0363ee26d8d252cfe51f3..da53cfa5f95bce15057cdfbe998b2f85aba690ac 100644 (file)
@@ -286,15 +286,7 @@ static const struct elim_table_1
   const int to;
 } reg_eliminate_1[] =
 
-/* If a set of eliminable registers was specified, define the table from it.
-   Otherwise, default to the normal case of the frame pointer being
-   replaced by the stack pointer.  */
-
-#ifdef ELIMINABLE_REGS
   ELIMINABLE_REGS;
-#else
-  {{ FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}};
-#endif
 
 #define NUM_ELIMINABLE_REGS ARRAY_SIZE (reg_eliminate_1)
 
@@ -3823,26 +3815,17 @@ static bool
 verify_initial_elim_offsets (void)
 {
   HOST_WIDE_INT t;
+  struct elim_table *ep;
 
   if (!num_eliminable)
     return true;
 
-#ifdef ELIMINABLE_REGS
-  {
-   struct elim_table *ep;
-
-   for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
-     {
-       INITIAL_ELIMINATION_OFFSET (ep->from, ep->to, t);
-       if (t != ep->initial_offset)
-        return false;
-     }
-  }
-#else
-  INITIAL_FRAME_POINTER_OFFSET (t);
-  if (t != reg_eliminate[0].initial_offset)
-    return false;
-#endif
+  for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
+    {
+      INITIAL_ELIMINATION_OFFSET (ep->from, ep->to, t);
+      if (t != ep->initial_offset)
+       return false;
+    }
 
   return true;
 }
@@ -3854,16 +3837,11 @@ set_initial_elim_offsets (void)
 {
   struct elim_table *ep = reg_eliminate;
 
-#ifdef ELIMINABLE_REGS
   for (; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
     {
       INITIAL_ELIMINATION_OFFSET (ep->from, ep->to, ep->initial_offset);
       ep->previous_offset = ep->offset = ep->initial_offset;
     }
-#else
-  INITIAL_FRAME_POINTER_OFFSET (ep->initial_offset);
-  ep->previous_offset = ep->offset = ep->initial_offset;
-#endif
 
   num_not_at_initial_offset = 0;
 }
@@ -3935,9 +3913,7 @@ update_eliminables (HARD_REG_SET *pset)
   for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
     if ((ep->from == HARD_FRAME_POINTER_REGNUM
          && targetm.frame_pointer_required ())
-#ifdef ELIMINABLE_REGS
        || ! targetm.can_eliminate (ep->from, ep->to)
-#endif
        )
       ep->can_eliminate = 0;
 
@@ -4058,16 +4034,13 @@ static void
 init_elim_table (void)
 {
   struct elim_table *ep;
-#ifdef ELIMINABLE_REGS
   const struct elim_table_1 *ep1;
-#endif
 
   if (!reg_eliminate)
     reg_eliminate = XCNEWVEC (struct elim_table, NUM_ELIMINABLE_REGS);
 
   num_eliminable = 0;
 
-#ifdef ELIMINABLE_REGS
   for (ep = reg_eliminate, ep1 = reg_eliminate_1;
        ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++, ep1++)
     {
@@ -4080,12 +4053,6 @@ init_elim_table (void)
                 && (! SUPPORTS_STACK_ALIGNMENT
                     || ! stack_realign_fp)));
     }
-#else
-  reg_eliminate[0].from = reg_eliminate_1[0].from;
-  reg_eliminate[0].to = reg_eliminate_1[0].to;
-  reg_eliminate[0].can_eliminate = reg_eliminate[0].can_eliminate_previous
-    = ! frame_pointer_needed;
-#endif
 
   /* Count the number of eliminable registers and build the FROM and TO
      REG rtx's.  Note that code in gen_rtx_REG will cause, e.g.,
index 6470c4377ea50150a384e3563e3543aa2d8a2a3a..69bc4fdd5e1e3ee289718cd49c05f8eed45058ac 100644 (file)
@@ -345,7 +345,6 @@ rtx_varies_p (const_rtx x, bool for_alias)
 static HOST_WIDE_INT
 get_initial_register_offset (int from, int to)
 {
-#ifdef ELIMINABLE_REGS
   static const struct elim_table_t
   {
     const int from;
@@ -448,33 +447,6 @@ get_initial_register_offset (int from, int to)
     return get_initial_register_offset (from, FRAME_POINTER_REGNUM);
   else
     return 0;
-
-#else
-  HOST_WIDE_INT offset;
-
-  if (to == from)
-    return 0;
-
-  if (reload_completed)
-    {
-      INITIAL_FRAME_POINTER_OFFSET (offset);
-    }
-  else
-    {
-      offset = crtl->outgoing_args_size + get_frame_size ();
-#if !STACK_GROWS_DOWNWARD
-      offset = - offset;
-#endif
-    }
-
-  if (to == STACK_POINTER_REGNUM)
-    return offset;
-  else if (from == STACK_POINTER_REGNUM)
-    return - offset;
-  else
-    return 0;
-
-#endif
 }
 
 /* Return nonzero if the use of X+OFFSET as an address in a MEM with SIZE
index 8d50691206356e460b38c1264be1f28cf15290cf..8d80448560de9eacdc812775aee918ba5a092212 100644 (file)
@@ -5289,7 +5289,7 @@ five otherwise.  This is best for most machines.",
  unsigned int, (void),
  default_case_values_threshold)
 
-/* Retutn true if a function must have and use a frame pointer.  */
+/* Return true if a function must have and use a frame pointer.  */
 DEFHOOK
 (frame_pointer_required,
  "This target hook should return @code{true} if a function must have and use\n\
@@ -5306,7 +5306,7 @@ pointer.\n\
 In certain cases, the compiler does not know how to produce valid code\n\
 without a frame pointer.  The compiler recognizes those cases and\n\
 automatically gives the function a frame pointer regardless of what\n\
-@code{TARGET_FRAME_POINTER_REQUIRED} returns.  You don't need to worry about\n\
+@code{targetm.frame_pointer_required} returns.  You don't need to worry about\n\
 them.\n\
 \n\
 In a function that does not require a frame pointer, the frame pointer\n\
@@ -5321,11 +5321,10 @@ Default return value is @code{false}.",
    from-reg with register number to-reg.  */
 DEFHOOK
 (can_eliminate,
- "This target hook should returns @code{true} if the compiler is allowed to\n\
+ "This target hook should return @code{true} if the compiler is allowed to\n\
 try to replace register number @var{from_reg} with register number\n\
-@var{to_reg}.  This target hook need only be defined if @code{ELIMINABLE_REGS}\n\
-is defined, and will usually be @code{true}, since most of the cases\n\
-preventing register elimination are things that the compiler already\n\
+@var{to_reg}.  This target hook will usually be @code{true}, since most of the\n\
+cases preventing register elimination are things that the compiler already\n\
 knows about.\n\
 \n\
 Default return value is @code{true}.",