From: Mans Rullgard Date: Mon, 19 Nov 2012 16:55:05 +0000 (+0000) Subject: rs6000.c (rs6000_stack_info): Always set vrsave_mask for TARGET_ALTIVEC_ABI. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8192d7302c410d22ccafc740b8650801e84624ef;p=gcc.git rs6000.c (rs6000_stack_info): Always set vrsave_mask for TARGET_ALTIVEC_ABI. 2012-11-19 Mans Rullgard * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 34c3f0ca0f8..ee1505848a2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-11-19 Mans Rullgard + + * 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 * system.h (vec_free): Undef. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 4bde3201a54..f55597f33d1 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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)) {