regs.h (HARD_REGNO_CALLER_SAVE_MODE): New macro.
authorJeff Law <law@gcc.gnu.org>
Wed, 30 Sep 1998 17:21:12 +0000 (11:21 -0600)
committerJeff Law <law@gcc.gnu.org>
Wed, 30 Sep 1998 17:21:12 +0000 (11:21 -0600)
        * regs.h (HARD_REGNO_CALLER_SAVE_MODE): New macro.
        * caller-save.c (init_caller_save): Use it.
        * tm.texi: Document HARD_REGNO_CALLER_SAVE_MODE.

From-SVN: r22682

gcc/ChangeLog
gcc/caller-save.c
gcc/regs.h
gcc/tm.texi

index 48e72c0cd3ea948db8f8a25253e099539ddbaf37..5e224d718286f3ab31c3b04979484e832fc61f27 100644 (file)
@@ -1,4 +1,10 @@
-Wed Sep 30 12:57:30 1998Zack Weinberg  <zack@rabi.phys.columbia.edu>  
+Wed Sep 30 18:19:27 1998  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+       * regs.h (HARD_REGNO_CALLER_SAVE_MODE): New macro.
+       * caller-save.c (init_caller_save): Use it.
+       * tm.texi: Document HARD_REGNO_CALLER_SAVE_MODE.
+
+Wed Sep 30 12:57:30 1998 Zack Weinberg  <zack@rabi.phys.columbia.edu>  
 
        * configure.in: Add --enable-cpplib option which uses cpplib
        for cpp, but doesn't link cpplib into cc1.  Make help text
index 4a2deb60db8bf2188e28078bb1928123ef5aaca7..60011f71c820147f258a7f82562ec08628952400 100644 (file)
@@ -115,7 +115,7 @@ init_caller_save ()
        {
          for (j = 1; j <= MOVE_MAX / UNITS_PER_WORD; j++)
            {
-             regno_save_mode[i][j] = choose_hard_reg_mode (i, j);
+             regno_save_mode[i][j] = HARD_REGNO_CALLER_SAVE_MODE (i, j);
              if (regno_save_mode[i][j] == VOIDmode && j == 1)
                {
                  call_fixed_regs[i] = 1;
index e248665e9badece7179503739a983f2d086e61f4..02bdf92c1f5071b226f15eb39655e08cfe3f4276 100644 (file)
@@ -211,6 +211,12 @@ extern int caller_save_needed;
 #define CLASS_LIKELY_SPILLED_P(CLASS) (reg_class_size[(int) (CLASS)] == 1)
 #endif
 
+/* Select a register mode required for caller save of hard regno REGNO.  */
+#ifndef HARD_REGNO_CALLER_SAVE_MODE
+#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS) \
+  choose_hard_reg_mode (REGNO, NREGS)
+#endif
+
 /* Allocated in local_alloc.  */
 
 /* A list of SCRATCH rtl allocated by local-alloc.  */
index ea3e8b3110a97e89e5669a4082be7599a3e85a2e..a42eb67a619d1ec6efb637027d0e25af1a273bcc 100644 (file)
@@ -3174,6 +3174,14 @@ this is worth doing, and 0 otherwise.
 
 If you don't define this macro, a default is used which is good on most
 machines: @code{4 * @var{calls} < @var{refs}}.
+
+@findex HARD_REGNO_CALLER_SAVE_MODE
+@item HARD_REGNO_CALLER_SAVE_MODE (@var{regno}, @var{nregs})
+A C expression specifying which mode is required for saving @var{nregs}
+of a pseudo-register in call-clobbered hard register @var{regno}.  If
+@var{regno} is unsuitable for caller save, @code{VOIDmode} should be
+returned.  For most machines this macro need not be defined since GCC
+will select the smallest suitable mode.
 @end table
 
 @node Function Entry