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 PR/34013]: Save red-zone while stack probing for x86_64


Hi,

> I tested this and confirm the problem. I did a regression test of this 
> patch for x86_64-linux and x86_64-mingw32 and it was successful.

Is this OK for apply ?

> ChangeLog
> 
> 2007-12-13  Arthur Norman <acn1@cam.ac.uk>
> 
>         * gcc/config/i386/i386.c: (ix86_expand_prologue): Save red-zone 
> while stack probing.
> 
> 
> See bugzilla: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34013
> 
> --- i386.c.orig          2007-10-27 23:32:02.331569000 +0100
> +++ i386.c               2007-11-09 22:27:25.695830000 +0000
> @@ -6283,8 +6283,12 @@
>      allocate += frame.nregs * UNITS_PER_WORD;
> 
>    /* When using red zone we may start register saving before allocating
> -     the stack frame saving one cycle of the prologue.  */
> -  if (TARGET_RED_ZONE && frame.save_regs_using_mov)
> +     the stack frame saving one cycle of the prologue. However I will
> +     avoid doing this if I am going to have to probe the stack since
> +     at least on x86_64 the stack probe can turn into a call that 
> clobbers
> +     a red zone location */
> +  if (TARGET_RED_ZONE && frame.save_regs_using_mov &&
> +      (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT))
>      ix86_emit_save_regs_using_mov (frame_pointer_needed ? 
> hard_frame_pointer_rtx
>                                                                     : 
> stack_pointer_rtx,
>  -frame.nregs * UNITS_PER_WORD);
> @@ -6340,7 +6344,8 @@
>                  }
>      }
> 
> -  if (frame.save_regs_using_mov && !TARGET_RED_ZONE)
> +  if (frame.save_regs_using_mov && (!TARGET_RED_ZONE ||
> +         !(! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT)))
>      {
>        if (!frame_pointer_needed || !frame.to_allocate)
>          ix86_emit_save_regs_using_mov (stack_pointer_rtx, 
> frame.to_allocate);

Cheers,
 i.A. Kai Tietz

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

------------------------------------------------------------------------------------------
  OneVision Software Entwicklungs GmbH & Co. KG
  Dr.-Leo-Ritter-StraÃe 9 - 93049 Regensburg
  Tel: +49.(0)941.78004.0 - Fax: +49.(0)941.78004.489 - www.OneVision.com
  Commerzbank Regensburg - BLZ 750 400 62 - Konto 6011050
  Handelsregister: HRA 6744, Amtsgericht Regensburg
  KomplementÃrin: OneVision Software Entwicklungs Verwaltungs GmbH
  Dr.-Leo-Ritter-StraÃe 9 â 93049 Regensburg
  Handelsregister: HRB 8932, Amtsgericht Regensburg - GeschÃftsfÃhrer: 
Ulrike DÃhler, Manuela Kluger


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