On 06/10/15 11:11, Eric Botcazou wrote: >> Thanks - I have no further comments on this patch. We probably need to >> implement the same on AArch64 too in order to avoid similar problems. > > Here's the implementation for aarch64, very similar but simpler since there > is > no shortage of scratch registers; the only thing to note is the new blockage > pattern. This was tested on real hardware but not with Linux, instead with > Darwin (experimental port of the toolchain to iOS) and makes it possible to > pass ACATS (Ada conformance testsuite which requires stack checking). > > There is also a couple of tweaks for the ARM implementation: a cosmetic one > for the probe_stack pattern and one for the output_probe_stack_range loop. > > > 2015-10-06 Tristan Gingold <ging...@adacore.com> > Eric Botcazou <ebotca...@adacore.com> > > PR middle-end/65958 > * config/aarch64/aarch64-protos.h (aarch64_output_probe_stack-range): > Declare. > * config/aarch64/aarch64.md: Declare UNSPECV_BLOCKAGE and > UNSPEC_PROBE_STACK_RANGE. > (blockage): New instruction. > (probe_stack_range): Likewise. > * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): New > function. > (aarch64_output_probe_stack_range): Likewise. > (aarch64_expand_prologue): Invoke aarch64_emit_probe_stack_range if > static builtin stack checking is enabled. > * config/aarch64/aarch64-linux.h (STACK_CHECK_STATIC_BUILTIN): > Define. > > * config/arm/arm.c (arm_emit_probe_stack_range): Adjust comment. > (output_probe_stack_range): Rotate the loop and simplify. > (thumb1_expand_prologue): Tweak sorry message. > * config/arm/arm.md (probe_stack): Use bare string. > > > 2015-10-06 Eric Botcazou <ebotca...@adacore.com> > > * gcc.target/aarch64/stack-checking.c: New test. >
Thanks - the arm backend changes are ok - but you need to wait for an AArch64 maintainer to review the AArch64 changes. I've CC'd a couple of them on this. Ramana