https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65958

--- Comment #5 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
Author: ebotcazou
Date: Thu Sep 17 11:06:57 2015
New Revision: 227860

URL: https://gcc.gnu.org/viewcvs?rev=227860&root=gcc&view=rev
Log:
        PR middle-end/65958
        * config/arm/linux-elf.h (STACK_CHECK_STATIC_BUILTIN): Define.
        * config/arm/arm-protos.h (output_probe_stack_range): Declare.
        * config/arm/arm.c: Include common/common-target.h.
        (use_return_insn): Return 0 if the static chain register was saved
        above a non-APCS frame.
        (arm_compute_static_chain_stack_bytes): Adjust for stack checking.
        (struct scratch_reg): New.
        (get_scratch_register_on_entry): New function.
        (release_scratch_register_on_entry): Likewise.
        (arm_emit_probe_stack_range): Likewise.
        (output_probe_stack_range): Likewise.
        (arm_expand_prologue): Factor out code dealing with the IP register
        for nested function and adjust it for stack checking.
        Invoke arm_emit_probe_stack_range if static builtin stack checking
        is enabled.
        (thumb1_expand_prologue): Sorry out if static builtin stack checking
        is enabled.
        (arm_expand_epilogue): Add the saved static chain register, if any, to
        the amount of pre-pushed registers to pop.
        (arm_frame_pointer_required): Return true if static stack checking is
        enabled and we want to catch the exception with the EABI unwinder.
        * config/arm/unspecs.md (UNSPEC_PROBE_STACK): New constant.
        (UNSPEC_PROBE_STACK_RANGE): Likewise.
        * config/arm/arm.md (probe_stack): New insn.
        (probe_stack_range): Likewise.

Added:
    trunk/gcc/testsuite/gcc.target/arm/stack-checking.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/arm/arm-protos.h
    trunk/gcc/config/arm/arm.c
    trunk/gcc/config/arm/arm.md
    trunk/gcc/config/arm/linux-elf.h
    trunk/gcc/config/arm/unspecs.md
    trunk/gcc/testsuite/ChangeLog

Reply via email to