[i386] Rotate stack checking loop

Uros Bizjak ubizjak@gmail.com
Thu Nov 12 22:03:00 GMT 2015


> this patch rotates the loop generated in the prologue to do stack checking
> when -fstack-check is specified, thereby saving one branch instruction.  It
> was initially implemented as a WHILE loop to match the generic implementation
> but can be turned into a DO-WHILE loop because the amount of stack to be
> checked is known at compile time (since it's the static part of the frame).
> The patch also changes a mov+sub pair into an lea in the common case on Linux,
> saving one more instruction in the process.
> Tested on x86/Linux & x86-64/Linux (ix86_adjust_stack_and_probe path) and
> x86/Solaris (ix86_emit_probe_stack_range path).  OK for the mainline?
> 2015-11-12  Eric Botcazou  <ebotcazou@adacore.com>
> * config/i386/i386.c (ix86_adjust_stack_and_probe): Adjust and use
> an lea instruction when possible.
> (output_adjust_stack_and_probe): Rotate the loop and simplify.
> (ix86_emit_probe_stack_range): Adjust.
> (output_probe_stack_range): Rotate the loop and simplify.



More information about the Gcc-patches mailing list