This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch i386 4.4/trunk]: Fix sse restore for x86_64 in case of !sp_valid


> 2009/9/21 Jan Hubicka <hubicka@ucw.cz>:
> >> Hello,
> >>
> >> In ix86_expand_epilogue for sp_valid == 0 are the xmm register
> >> restored ?incorrectly. This leads to possible clobbered xmm register
> >> on unwind. This issue could be related to the AVX fail, too.
> >
> > I must say I fail to see how 4.4 version can make difference. ?If
> > padding0 is nonzero, nsse_regs is too, so I see it is redundant testing
> > it, but it also should not hurt?
> >
> > Honza
> >
> 
> padding0 can be != 0, if there are standard registers saved (or none
> needs to be saved), as it aligns to always to 16 bytes.

If I remember right, I introduced padding0 to be area to pad SSE
register save area.  In current 4.4 tree it is set only here:

  /* Align SSE reg save area.  */
  if (frame->nsseregs)
    frame->padding0 = ((offset + 16 - 1) & -16) - offset;
  else
    frame->padding0 = 0;

Padding1 was traditionally used to align function to 16 bytes.

Honza
> 
> Cheers,
> Kai
> 
> -- 
> |  (\_/) This is Bunny. Copy and paste
> | (='.'=) Bunny into your signature to help
> | (")_(") him gain world domination


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]