re PR target/89093 (C++ exception handling clobbers d8 VFP register)
authorRamana Radhakrishnan <ramana.radhakrishnan@arm.com>
Tue, 23 Apr 2019 10:03:41 +0000 (10:03 +0000)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 23 Apr 2019 10:03:41 +0000 (12:03 +0200)
commit48528842bd79cb2e2a1d478b1d90d748377bb76c
tree67f80893433a6265908f5557a9cd9491cbccc4a9
parent70265a0c5bd3e2050ce489ef969e72465e698aa5
re PR target/89093 (C++ exception handling clobbers d8 VFP register)

PR target/89093
* config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Diagnose
if used with general-regs-only.
(arm_conditional_register_usage): Don't add non-general regs if
general-regs-only.
(arm_valid_target_attribute_rec): Handle general-regs-only.
* config/arm/arm.h (TARGET_HARD_FLOAT): Return false if
general-regs-only.
(TARGET_HARD_FLOAT_SUB): Define.
(TARGET_SOFT_FLOAT): Define as negation of TARGET_HARD_FLOAT_SUB.
(TARGET_REALLY_IWMMXT): Add && !TARGET_GENERAL_REGS_ONLY.
(TARGET_REALLY_IWMMXT2): Likewise.
* config/arm/arm.opt: Add -mgeneral-regs-only.
* doc/extend.texi: Document ARM general-regs-only target.
* doc/invoke.texi: Document ARM -mgeneral-regs-only.
libgcc/
* config/arm/pr-support.c: Add #pragma GCC target("general-regs-only").
* config/arm/unwind-arm.c: Likewise.
* unwind-c.c (PERSONALITY_FUNCTION): Add general-regs-only target
attribute for ARM.
libobjc/
* exception.c (PERSONALITY_FUNCTION): Add general-regs-only target
attribute for ARM.
libphobos/
* libdruntime/gcc/deh.d: Import gcc.attribute.
(personality_fn_attributes): New enum.
(scanLSDA, CONTINUE_UNWINDING, gdc_personality, __gdc_personality):
Add @personality_fn_attributes.
libstdc++-v3/
* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
general-regs-only target attribute for ARM.

Co-Authored-By: Bernd Edlinger <bernd.edlinger@hotmail.de>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r270504
16 files changed:
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/arm.opt
gcc/doc/extend.texi
gcc/doc/invoke.texi
libgcc/ChangeLog
libgcc/config/arm/pr-support.c
libgcc/config/arm/unwind-arm.c
libgcc/unwind-c.c
libobjc/ChangeLog
libobjc/exception.c
libphobos/ChangeLog
libphobos/libdruntime/gcc/deh.d
libstdc++-v3/ChangeLog
libstdc++-v3/libsupc++/eh_personality.cc