diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2017-08-22 04:05:50 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2017-08-22 04:05:50 +0000 |
commit | 672167943f148689557e70a137e8f8f19ffdd412 (patch) | |
tree | f5e37ef80687b34599c3192b9a8a4b6ebfbe69a4 | |
parent | 63b65394978b2a5e37988e275e07127cc558c11b (diff) |
builtins: erase `struct` modifier for EH personality
On ARM, the `_Unwind_Exception` is an alias for
`struct _Unwind_Control_Block`. The extra `struct` modifier causes a
warning due to the locally scoped type. Special case this to avoid the
warning. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@311425 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/builtins/gcc_personality_v0.c | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/lib/builtins/gcc_personality_v0.c b/lib/builtins/gcc_personality_v0.c index 0bc765624..4e27ac0a9 100644 --- a/lib/builtins/gcc_personality_v0.c +++ b/lib/builtins/gcc_personality_v0.c @@ -145,23 +145,29 @@ static uintptr_t readEncodedPointer(const uint8_t** data, uint8_t encoding) #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \ !defined(__ARM_DWARF_EH__) #define USING_ARM_EHABI 1 -_Unwind_Reason_Code __gnu_unwind_frame(struct _Unwind_Exception *, +_Unwind_Reason_Code __gnu_unwind_frame(_Unwind_Exception *, struct _Unwind_Context *); #endif +#if USING_ARM_EHABI +static inline _Unwind_Reason_Code +continueUnwind(_Unwind_Exception *exceptionObject, + struct _Unwind_Context *context) { + /* + * On ARM EHABI the personality routine is responsible for actually + * unwinding a single stack frame before returning (ARM EHABI Sec. 6.1). + */ + if (__gnu_unwind_frame(exceptionObject, context) != _URC_OK) + return _URC_FAILURE; + return _URC_CONTINUE_UNWIND; +} +#else static inline _Unwind_Reason_Code continueUnwind(struct _Unwind_Exception *exceptionObject, struct _Unwind_Context *context) { -#if USING_ARM_EHABI - /* - * On ARM EHABI the personality routine is responsible for actually - * unwinding a single stack frame before returning (ARM EHABI Sec. 6.1). - */ - if (__gnu_unwind_frame(exceptionObject, context) != _URC_OK) - return _URC_FAILURE; -#endif - return _URC_CONTINUE_UNWIND; + return _URC_CONTINUE_UNWIND; } +#endif /* * The C compiler makes references to __gcc_personality_v0 in @@ -176,18 +182,20 @@ continueUnwind(struct _Unwind_Exception *exceptionObject, * different name */ COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_sj0(int version, _Unwind_Action actions, - uint64_t exceptionClass, struct _Unwind_Exception* exceptionObject, - struct _Unwind_Context *context) + uint64_t exceptionClass, + struct _Unwind_Exception *exceptionObject, + struct _Unwind_Context *context) #elif USING_ARM_EHABI /* The ARM EHABI personality routine has a different signature. */ -COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0( - _Unwind_State state, struct _Unwind_Exception *exceptionObject, - struct _Unwind_Context *context) +COMPILER_RT_ABI _Unwind_Reason_Code +__gcc_personality_v0(_Unwind_State state, _Unwind_Exception *exceptionObject, + struct _Unwind_Context *context) #else COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0(int version, _Unwind_Action actions, - uint64_t exceptionClass, struct _Unwind_Exception* exceptionObject, - struct _Unwind_Context *context) + uint64_t exceptionClass, + struct _Unwind_Exception *exceptionObject, + struct _Unwind_Context *context) #endif { /* Since C does not have catch clauses, there is nothing to do during */ |