summaryrefslogtreecommitdiff
path: root/libgcc/unwind-c.c
diff options
context:
space:
mode:
authorRamana Radhakrishnan <ramana.radhakrishnan@arm.com>2019-04-23 10:03:41 +0000
committerJakub Jelinek <jakub@gcc.gnu.org>2019-04-23 12:03:41 +0200
commit48528842bd79cb2e2a1d478b1d90d748377bb76c (patch)
tree67f80893433a6265908f5557a9cd9491cbccc4a9 /libgcc/unwind-c.c
parent70265a0c5bd3e2050ce489ef969e72465e698aa5 (diff)
downloadgcc-48528842bd79cb2e2a1d478b1d90d748377bb76c.tar.gz
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
Diffstat (limited to 'libgcc/unwind-c.c')
-rw-r--r--libgcc/unwind-c.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/libgcc/unwind-c.c b/libgcc/unwind-c.c
index 3e55cda7f7b..859735a3325 100644
--- a/libgcc/unwind-c.c
+++ b/libgcc/unwind-c.c
@@ -106,6 +106,7 @@ PERSONALITY_FUNCTION (_Unwind_State, struct _Unwind_Exception *,
struct _Unwind_Context *);
_Unwind_Reason_Code
+__attribute__((target ("general-regs-only")))
PERSONALITY_FUNCTION (_Unwind_State state,
struct _Unwind_Exception * ue_header,
struct _Unwind_Context * context)