OSDN Git Service

* config/sh/sh.c (calc_live_regs): Don't use initial_value
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 13 Jun 2002 21:31:58 +0000 (21:31 +0000)
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 13 Jun 2002 21:31:58 +0000 (21:31 +0000)
optimization for PR_MEDIA_REG.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54600 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sh/sh.c

index d5270c8..05b3a05 100644 (file)
@@ -1,3 +1,8 @@
+Thu Jun 13 22:29:40 2002  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * config/sh/sh.c (calc_live_regs): Don't use initial_value
+       optimization for PR_MEDIA_REG.
+
 2002-06-13  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * cpphash.h (_cpp_lex_identifier_trad): Remove.
index edd4c49..a9c2e82 100644 (file)
@@ -4362,7 +4362,6 @@ calc_live_regs (count_ptr, live_regs_mask)
   int reg;
   int count;
   int interrupt_handler;
-  rtx pr_initial;
   int pr_live;
 
   if ((lookup_attribute
@@ -4385,12 +4384,18 @@ calc_live_regs (count_ptr, live_regs_mask)
          target_flags &= ~FPU_SINGLE_BIT;
          break;
        }
-  pr_initial = has_hard_reg_initial_val (Pmode,
-                                        TARGET_SHMEDIA
-                                        ? PR_MEDIA_REG : PR_REG);
-  pr_live = (pr_initial
-            ? REGNO (pr_initial) != (TARGET_SHMEDIA ? PR_MEDIA_REG : PR_REG)
-            : regs_ever_live[TARGET_SHMEDIA ? PR_MEDIA_REG : PR_REG]);
+  /* PR_MEDIA_REG is a general purpose register, thus global_alloc already
+     knows how to use it.  That means the pseudo originally allocated for
+     the initial value can become the PR_MEDIA_REG hard register, as seen for
+     execute/20010122-1.c:test9.  */
+  if (TARGET_SHMEDIA)
+    pr_live = regs_ever_live[PR_MEDIA_REG];
+  else
+    {
+      rtx pr_initial = has_hard_reg_initial_val (Pmode, PR_REG);
+      pr_live = (pr_initial
+                ? REGNO (pr_initial) != (PR_REG) : regs_ever_live[PR_REG]);
+    }
   /* Force PR to be live if the prologue has to call the SHmedia
      argument decoder or register saver.  */
   if (TARGET_SHCOMPACT