rs6000.c (rs6000_stack_info): Always set vrsave_mask for TARGET_ALTIVEC_ABI.
authorMans Rullgard <mans@mansr.com>
Mon, 19 Nov 2012 16:55:05 +0000 (16:55 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Mon, 19 Nov 2012 16:55:05 +0000 (11:55 -0500)
2012-11-19  Mans Rullgard  <mans@mansr.com>

        * config/rs6000/rs6000.c (rs6000_stack_info): Always set vrsave_mask
        for TARGET_ALTIVEC_ABI.  Zero vrsave_save_offset if
        !TARGET_ALTIVEC_VRSAVE.
        (rs6000_emit_prologue): For SAVE_INLINE_VLRs, check vrsave_size
        not vrsave_mask.

From-SVN: r193627

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

index 34c3f0ca0f8f30d9e02e4eb4f3adae82e0407354..ee1505848a29549dc484f0b2c597bec63dcb22d9 100644 (file)
@@ -1,3 +1,11 @@
+2012-11-19  Mans Rullgard  <mans@mansr.com>
+
+       * config/rs6000/rs6000.c (rs6000_stack_info): Always set vrsave_mask
+       for TARGET_ALTIVEC_ABI.  Zero vrsave_save_offset if
+       !TARGET_ALTIVEC_VRSAVE.
+       (rs6000_emit_prologue): For SAVE_INLINE_VLRs, check vrsave_size
+       not vrsave_mask.
+
 2012-11-19  David Edelsohn  <dje.gcc@gmail.com>
 
        * system.h (vec_free): Undef.
index 4bde3201a54421fecff819e9b360d163aa1901cf..f55597f33d1b23c5953703b902a5843000cacbb6 100644 (file)
@@ -17838,8 +17838,7 @@ rs6000_stack_info (void)
   else
     info_ptr->spe_gp_size = 0;
 
-  /* Set VRSAVE register if it is saved and restored.  */
-  if (TARGET_ALTIVEC_ABI && TARGET_ALTIVEC_VRSAVE)
+  if (TARGET_ALTIVEC_ABI)
     info_ptr->vrsave_mask = compute_vrsave_mask ();
   else
     info_ptr->vrsave_mask = 0;
@@ -18027,7 +18026,8 @@ rs6000_stack_info (void)
   if (! TARGET_ALTIVEC_ABI || info_ptr->altivec_size == 0)
     info_ptr->altivec_save_offset = 0;
 
-  if (! TARGET_ALTIVEC_ABI || info_ptr->vrsave_mask == 0)
+  /* Zero VRSAVE offset if not saved and restored.  */
+  if (! TARGET_ALTIVEC_VRSAVE || info_ptr->vrsave_mask == 0)
     info_ptr->vrsave_save_offset = 0;
 
   if (! TARGET_SPE_ABI
@@ -20058,7 +20058,7 @@ rs6000_emit_prologue (void)
          || (info->altivec_size != 0
              && (info->altivec_save_offset + info->altivec_size - 16
                  + info->total_size - frame_off) > 32767)
-         || (info->vrsave_mask != 0
+         || (info->vrsave_size != 0
              && (info->vrsave_save_offset
                  + info->total_size - frame_off) > 32767))
        {