Enable zero-cost exceptions on non-Apple arm64 platforms

Use the canonical __aarch64__ predefined macro for 64-bit ARM. Apple-
specific cases are left as __arm64__. Also add an #error for unsupported
architectures to catch this sort of case in the future.

Differential Revision: http://reviews.llvm.org/D12005

llvm-svn: 244893
This commit is contained in:
Ed Maste 2015-08-13 14:21:03 +00:00
parent 76050da17e
commit ef766a7e70
2 changed files with 5 additions and 2 deletions

View File

@ -72,7 +72,8 @@
#define _LIBUNWIND_BUILD_ZERO_COST_APIS (defined(__i386__) || \
defined(__x86_64__) || \
defined(__arm__))
defined(__arm__) || \
defined(__aarch64__))
#define _LIBUNWIND_BUILD_SJLJ_APIS 0
#define _LIBUNWIND_SUPPORT_FRAME_APIS (defined(__i386__) || \
defined(__x86_64__))

View File

@ -58,12 +58,14 @@ _LIBUNWIND_EXPORT int unw_init_local(unw_cursor_t *cursor,
#elif defined(__ppc__)
new ((void *)cursor) UnwindCursor<LocalAddressSpace, Registers_ppc>(
context, LocalAddressSpace::sThisAddressSpace);
#elif defined(__arm64__)
#elif defined(__arm64__) || defined(__aarch64__)
new ((void *)cursor) UnwindCursor<LocalAddressSpace, Registers_arm64>(
context, LocalAddressSpace::sThisAddressSpace);
#elif _LIBUNWIND_ARM_EHABI
new ((void *)cursor) UnwindCursor<LocalAddressSpace, Registers_arm>(
context, LocalAddressSpace::sThisAddressSpace);
#else
#error Architecture not supported
#endif
AbstractUnwindCursor *co = (AbstractUnwindCursor *)cursor;
co->setInfoBasedOnIPRegister();