This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH PR/34013]: Save red-zone while stack probing for x86_64
- From: Kai Tietz <Kai dot Tietz at onevision dot com>
- To: "GCC Patches" <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 14 Dec 2007 09:52:37 +0100
- Subject: 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