Reunify x86 stack checking implementation
authorEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 16 Jul 2020 15:50:26 +0000 (17:50 +0200)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 16 Jul 2020 16:13:56 +0000 (18:13 +0200)
commitf569026aa3088aa895ea39618d2998333b08600b
treed8d1893f1871eae2ba5da2ae21162b79a053c97a
parenta54d71cb664199c98fbb2694e9314566d6ca0ed2
Reunify x86 stack checking implementation

The stack clash protection mechanism in the x86 back-end was implemented
by largely duplicating the existing stack checking implementation.  Now
the only significant difference between them is the probing window, which
is shifted by 1 probing interval (not 2 as documented in explow.c), but we
can certainly do 1 more probe for stack checking even if it is redundant
in almost all cases.

gcc/ChangeLog:
* config/i386/i386.c (ix86_compute_frame_layout): Minor tweak.
(ix86_adjust_stack_and_probe): Delete.
(ix86_adjust_stack_and_probe_stack_clash): Rename to above and add
PROTECTION_AREA parameter.  If it is true, probe PROBE_INTERVAL plus
a small dope beyond SIZE bytes.
(ix86_emit_probe_stack_range): Use local variable.
(ix86_expand_prologue): Adjust calls to ix86_adjust_stack_and_probe
and tidy up the stack checking code.
* explow.c (get_stack_check_protect): Fix head comment.
(anti_adjust_stack_and_probe_stack_clash): Likewise.
(allocate_dynamic_stack_space): Add comment.

* tree-nested.c (lookup_field_for_decl): Set the DECL_IGNORED_P and
TREE_NO_WARNING but not TREE_ADDRESSABLE flags on the field.
gcc/config/i386/i386.c
gcc/explow.c
gcc/tree-nested.c