Ping for: On May 15, 2012, at 11:10 AM, Tristan Gingold wrote:
> Hi, > > use of 'unsigned int' for i386.c:ix86_compute_frame_layout > stack_alignment_needed results in truncation of frame offset in code such as: > > offset = (offset + stack_alignment_needed - 1) & -stack_alignment_needed > > (as it is -stack_alignment_needed that is converted to HOST_WIDE_INT). > > As a consequence, frames larger than 4GB are squeezed. > > Also, the frame field of struct ix86_frame is never used. > > Bootstrapped and reg-tested on x86_64 GNU/Linux, without regressions. > > Ok for trunk ? > > Tristan. > > 2012-05-15 Tristan Gingold <ging...@adacore.com> > > * config/i386/i386.c (struct ix86_frame): Remove unused frame field. > (ix86_compute_frame_layout): Fix type of stack_alignment_needed > and preferred_alignment. > > diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c > index ad4739b..353ee53 100644 > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -2408,7 +2408,6 @@ struct ix86_frame > int va_arg_size; > int red_zone_size; > int outgoing_arguments_size; > - HOST_WIDE_INT frame; > > /* The offsets relative to ARG_POINTER. */ > HOST_WIDE_INT frame_pointer_offset; > @@ -8937,9 +8936,9 @@ ix86_builtin_setjmp_frame_value (void) > static void > ix86_compute_frame_layout (struct ix86_frame *frame) > { > - unsigned int stack_alignment_needed; > + unsigned HOST_WIDE_INT stack_alignment_needed; > HOST_WIDE_INT offset; > - unsigned int preferred_alignment; > + unsigned HOST_WIDE_INT preferred_alignment; > HOST_WIDE_INT size = get_frame_size (); > HOST_WIDE_INT to_allocate; > >