On Wed, Jan 27, 2016 at 8:25 PM, H.J. Lu <hongjiu...@intel.com> wrote:
>
> __tls_get_addr must be called with 16-byte aligned stack, which is
> guaranted by setting preferred_stack_boundary to 128 bits.  There
> is no need to change stack_alignment_needed for __tls_get_addr.
>
> Tested on x86-64.  OK for trunk?

You know the purpose of these flags better than I, so - OK.

Thanks,
Uros.

>
> H.J.
> --
>         PR target/68986
>         * config/i386/i386.c (ix86_update_stack_boundary): Don't
>         change stack_alignment_needed for __tls_get_addr call.
> ---
>  gcc/config/i386/i386.c | 6 +-----
>  1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index cfbdf0f..6dc1fa5 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -12035,11 +12035,7 @@ ix86_update_stack_boundary (void)
>    /* __tls_get_addr needs to be called with 16-byte aligned stack.  */
>    if (ix86_tls_descriptor_calls_expanded_in_cfun
>        && crtl->preferred_stack_boundary < 128)
> -    {
> -      crtl->preferred_stack_boundary = 128;
> -      if (crtl->stack_alignment_needed < 128)
> -       crtl->stack_alignment_needed = 128;
> -    }
> +    crtl->preferred_stack_boundary = 128;
>  }
>
>  /* Handle the TARGET_GET_DRAP_RTX hook.  Return NULL if no DRAP is
> --
> 2.5.0
>

Reply via email to