]> gcc.gnu.org Git - gcc.git/commitdiff
pa.c (output_function_epilogue): Perform an early %r2 restore even if actual_fsize...
authorJeff Law <law@gcc.gnu.org>
Fri, 5 Mar 1993 20:13:08 +0000 (13:13 -0700)
committerJeff Law <law@gcc.gnu.org>
Fri, 5 Mar 1993 20:13:08 +0000 (13:13 -0700)
        * pa.c (output_function_epilogue): Perform an early %r2 restore
        even if actual_fsize is zero.  This can happen if %r2 is used
        as a temporary in a leaf function.

        * pa.c (compute_frame_size): Update to take into account
        register which are no longer known to the compiler.
        (output_function_prologue): Likewise.
        (output_function_epilogue): Likewise.
        (output_arg_descriptor): Likewise.

From-SVN: r3658

gcc/config/pa/pa.c

index 1e2f37f9a74e1babc59b0ded326603484f9a97ec..452052083568bae9879f4c86dfa26512c12e2f27 100644 (file)
@@ -1645,7 +1645,7 @@ compute_frame_size (size, fregs_live)
 
   if (!TARGET_SNAKE)
     {
-      for (i = 47; i >= 44; i--)
+      for (i = 43; i >= 40; i--)
        if (regs_ever_live[i])
          {
            fsize += 8;
@@ -1655,7 +1655,7 @@ compute_frame_size (size, fregs_live)
     }
   else
     {
-      for (i = 90; i >= 72; i -= 2)
+      for (i = 78; i >= 60; i -= 2)
        if (regs_ever_live[i] || regs_ever_live[i + 1])
          {
            fsize += 8;
@@ -1845,7 +1845,7 @@ output_function_prologue (file, size)
        }
       if (!TARGET_SNAKE)
        {
-         for (i = 47; i >= 44; i--)
+         for (i = 43; i >= 40; i--)
            {
              if (regs_ever_live[i])
                fprintf (file, "\tfstds,ma %s,8(0,%%r1)\n", reg_names[i]);
@@ -1853,7 +1853,7 @@ output_function_prologue (file, size)
        }
       else
        {
-         for (i = 90; i >= 72; i -= 2)
+         for (i = 78; i >= 60; i -= 2)
            if (regs_ever_live[i] || regs_ever_live[i + 1])
              {
                fprintf (file, "\tfstds,ma %s,8(0,%%r1)\n", reg_names[i]);
@@ -1877,8 +1877,7 @@ output_function_epilogue (file, size)
   if (frame_pointer_needed
       && (regs_ever_live [2] || profile_flag))
     fprintf (file, "\tldw -20(%%r4),%%r2\n");
-  else if (actual_fsize
-          && VAL_14_BITS_P (actual_fsize + 20)
+  else if (VAL_14_BITS_P (actual_fsize + 20)
           && (regs_ever_live [2] || profile_flag))
     fprintf(file,"\tldw %d(0,%%r30),%%r2\n", - (actual_fsize + 20));
 
@@ -1949,7 +1948,7 @@ output_function_epilogue (file, size)
        }
       if (!TARGET_SNAKE)
        {
-         for (i = 47; i >= 44; i--)
+         for (i = 43; i >= 40; i--)
            {
              if (regs_ever_live[i])
                fprintf (file, "\tfldds,ma 8(0,%%r1),%s\n", reg_names[i]);
@@ -1957,7 +1956,7 @@ output_function_epilogue (file, size)
        }
       else
        {
-         for (i = 90; i >= 72; i -= 2)
+         for (i = 78; i >= 60; i -= 2)
            if (regs_ever_live[i] || regs_ever_live[i + 1])
              {
                fprintf (file, "\tfldds,ma 8(0,%%r1),%s\n", reg_names[i]);
@@ -2742,30 +2741,30 @@ output_arg_descriptor (insn)
       else if (!TARGET_SNAKE)  /* fp args */
        {
          if (arg_mode == SFmode)
-           arg_regs[regno - 36] = "FR";
+           arg_regs[regno - 32] = "FR";
          else
            {
 #ifdef HP_FP_ARG_DESCRIPTOR_REVERSED
-             arg_regs[regno - 37] = "FR";
-             arg_regs[regno - 36] = "FU";
+             arg_regs[regno - 33] = "FR";
+             arg_regs[regno - 32] = "FU";
 #else
-             arg_regs[regno - 37] = "FU";
-             arg_regs[regno - 36] = "FR";
+             arg_regs[regno - 33] = "FU";
+             arg_regs[regno - 32] = "FR";
 #endif
            }
        }
       else
        {
          if (arg_mode == SFmode)
-           arg_regs[(regno - 56) / 2] = "FR";
+           arg_regs[(regno - 44) / 2] = "FR";
          else
            {
 #ifdef HP_FP_ARG_DESCRIPTOR_REVERSED
-             arg_regs[(regno - 58) / 2] = "FR";
-             arg_regs[(regno - 58) / 2 + 1] = "FU";
+             arg_regs[(regno - 46) / 2] = "FR";
+             arg_regs[(regno - 46) / 2 + 1] = "FU";
 #else
-             arg_regs[(regno - 58) / 2] = "FU";
-             arg_regs[(regno - 58) / 2 + 1] = "FR";
+             arg_regs[(regno - 46) / 2] = "FU";
+             arg_regs[(regno - 46) / 2 + 1] = "FR";
 #endif
            }
        }
This page took 0.073596 seconds and 5 git commands to generate.