From: Ramana Radhakrishnan Date: Wed, 24 Apr 2019 08:16:07 +0000 (+0000) Subject: re PR target/89093 (C++ exception handling clobbers d8 VFP register) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0f7e4fe2e3df79f854787901c3ab2e899ad1997c;p=gcc.git re PR target/89093 (C++ exception handling clobbers d8 VFP register) PR target/89093 * raise-gcc.c (TARGET_ATTRIBUTE): Define. (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add TARGET_ATTRIBUTE. Co-Authored-By: Bernd Edlinger Co-Authored-By: Jakub Jelinek From-SVN: r270535 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 7e36b01e9b2..0888f548ec7 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,12 @@ +2019-04-24 Ramana Radhakrishnan + Bernd Edlinger + Jakub Jelinek + + PR target/89093 + * raise-gcc.c (TARGET_ATTRIBUTE): Define. + (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add + TARGET_ATTRIBUTE. + 2019-04-07 Eric Botcazou * libgnat/i-cexten.ads (CFloat_128): New type. diff --git a/gcc/ada/raise-gcc.c b/gcc/ada/raise-gcc.c index 3ed97632363..6092a87b881 100644 --- a/gcc/ada/raise-gcc.c +++ b/gcc/ada/raise-gcc.c @@ -1154,10 +1154,18 @@ extern void __gnat_notify_unhandled_exception (struct Exception_Occurrence *); #define PERSONALITY_FUNCTION __gnat_personality_v0 #endif +#if defined (__ARM_EABI_UNWINDER__) \ + && (defined (IN_RTS) || GCC_VERSION > 9000) +#define TARGET_ATTRIBUTE __attribute__((target ("general-regs-only"))) +#else +#define TARGET_ATTRIBUTE +#endif + /* Code executed to continue unwinding. With the ARM unwinder, the personality routine must unwind one frame (per EHABI 7.3 4.). */ static _Unwind_Reason_Code +TARGET_ATTRIBUTE continue_unwind (struct _Unwind_Exception* ue_header ATTRIBUTE_UNUSED, struct _Unwind_Context* uw_context ATTRIBUTE_UNUSED) { @@ -1172,6 +1180,7 @@ continue_unwind (struct _Unwind_Exception* ue_header ATTRIBUTE_UNUSED, between all unwinders. */ static _Unwind_Reason_Code +TARGET_ATTRIBUTE personality_body (_Unwind_Action uw_phases, _Unwind_Exception *uw_exception, _Unwind_Context *uw_context) @@ -1342,6 +1351,7 @@ PERSONALITY_FUNCTION (_Unwind_State state, struct _Unwind_Context* uw_context); PERSONALITY_STORAGE _Unwind_Reason_Code +TARGET_ATTRIBUTE PERSONALITY_FUNCTION (_Unwind_State state, struct _Unwind_Exception* uw_exception, struct _Unwind_Context* uw_context)