* gcc/config/rs6000/rs6000.c (rs6000_stack_info)
authorhpenner <hpenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 Jan 2004 10:57:40 +0000 (10:57 +0000)
committerhpenner <hpenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 Jan 2004 10:57:40 +0000 (10:57 +0000)
      Calculate always vrsave_mask if TARGET_ALTIVEC.
      (rs6000_emit_prologue): Emit code for vrsave
      only if TARGET_ALTIVEC_VRSAVE.
      (rs6000_emit_epilogue): Likewise.

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

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 06b4851..c2e5a06 100644 (file)
@@ -1,3 +1,11 @@
+2004-01-14  Hartmut Penner  <hpenner@de.ibm.com>
+
+       * gcc/config/rs6000/rs6000.c (rs6000_stack_info)
+       Calculate always vrsave_mask if TARGET_ALTIVEC.
+       (rs6000_emit_prologue): Emit code for vrsave
+       only if TARGET_ALTIVEC_VRSAVE.
+       (rs6000_emit_epilogue): Likewise.
+
 2004-01-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
 
        * config/sparc/sparc.md (tie_add32): Fix pasto.
index 5f24cf8..2abd380 100644 (file)
@@ -10508,16 +10508,15 @@ rs6000_stack_info (void)
   else
     info_ptr->spe_gp_size = 0;
 
-  if (TARGET_ALTIVEC_ABI && TARGET_ALTIVEC_VRSAVE)
-    {
-      info_ptr->vrsave_mask = compute_vrsave_mask ();
-      info_ptr->vrsave_size  = info_ptr->vrsave_mask ? 4 : 0;
-    }
+  if (TARGET_ALTIVEC_ABI)
+    info_ptr->vrsave_mask = compute_vrsave_mask ();
   else
-    {
-      info_ptr->vrsave_mask = 0;
-      info_ptr->vrsave_size = 0;
-    }
+    info_ptr->vrsave_mask = 0;
+
+  if (TARGET_ALTIVEC_VRSAVE && info_ptr->vrsave_mask)
+    info_ptr->vrsave_size  = 4;
+  else
+    info_ptr->vrsave_size  = 0;
 
   /* Calculate the offsets.  */
   switch (DEFAULT_ABI)
@@ -11679,7 +11678,8 @@ rs6000_emit_prologue (void)
      used in this function, and do the corresponding magic in the
      epilogue.  */
 
-  if (TARGET_ALTIVEC && info->vrsave_mask != 0)
+  if (TARGET_ALTIVEC && TARGET_ALTIVEC_VRSAVE
+      && info->vrsave_mask != 0)
     {
       rtx reg, mem, vrsave;
       int offset;
@@ -12141,7 +12141,8 @@ rs6000_emit_epilogue (int sibcall)
     }
 
   /* Restore VRSAVE if needed.  */
-  if (TARGET_ALTIVEC_ABI && info->vrsave_mask != 0)
+  if (TARGET_ALTIVEC_ABI && TARGET_ALTIVEC_VRSAVE 
+      && info->vrsave_mask != 0)
     {
       rtx addr, mem, reg;