This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Ping [IA-64] Implement static stack checking
- From: Tristan Gingold <gingold at adacore dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: Richard Henderson <rth at redhat dot com>
- Date: Wed, 4 Apr 2012 09:33:28 +0200
- Subject: Ping [IA-64] Implement static stack checking
- References: <201203062308.20673.ebotcazou@adacore.com>
Hi,
I'd like to ping this patch, as it hasn't been reviewed for 4 weeks.
Tristan.
On Mar 6, 2012, at 11:08 PM, Eric Botcazou wrote:
> This at last implements static stack checking for the IA-64, i.e. stack
> checking of the static part of the frame, and makes it possible to pass the
> entire ACATS testsuite. The peculiarity is the second stack in memory, namely
> the Backing Store of the Register Stack Engine, that needs to be dealt with.
>
> This also introduces full support for "unknown" insns in the bundling code (the
> only other "unknown" insn, namely set_bsp, didn't need that because it comes
> always last in a function).
>
> Bootstrapped/regtested on IA-64/Linux (and also tested on IA-64/HP-UX and VMS),
> OK for the mainline?
>
>
> 2012-03-06 Eric Botcazou <ebotcazou@adacore.com>
> Tristan Gingold <gingold@adacore.com>
>
> * doc/md.texi (Standard Names): Document probe_stack_address.
> * explow.c (emit_stack_probe): Handle probe_stack_address.
> * config/ia64/ia64.md (UNSPECV_PROBE_STACK_ADDRESS): New constant.
> (UNSPECV_PROBE_STACK_RANGE): Likewise.
> (probe_stack_address): New insn.
> (probe_stack_range): Likewise.
> * config/ia64/ia64.c: Include common/common-target.h.
> (ia64_compute_frame_size): Mark r2 and r3 as used if static stack
> checking is enabled.
> (ia64_emit_probe_stack_range): New function.
> (output_probe_stack_range): Likewise.
> (ia64_expand_prologue): Invoke ia64_emit_probe_stack_range if static
> builtin stack checking is enabled.
> (rtx_needs_barrier) <UNSPEC_VOLATILE>: Handle UNSPECV_PROBE_STACK_RANGE
> and UNSPECV_PROBE_STACK_ADDRESS.
> (unknown_for_bundling_p): New predicate.
> (group_barrier_needed): Use important_for_bundling_p.
> (ia64_dfa_new_cycle): Use unknown_for_bundling_p.
> (issue_nops_and_insn): Likewise.
> (bundling): Likewise.
> (final_emit_insn_group_barriers): Likewise.
> * config/ia64/ia64-protos.h (output_probe_stack_range): Declare.
> * config/ia64/hpux.h (STACK_CHECK_STATIC_BUILTIN): Define.
> (STACK_CHECK_PROTECT): Likewise.
> * config/ia64/linux.h (STACK_CHECK_STATIC_BUILTIN): Likewise.
>
>
> --
> Eric Botcazou
> <p2.diff>