r246985 made changes to give a higher alignment for exception objects on the grounds that Itanium says _Unwind_Exception should be "double-word" aligned and the structure is normally declared with attribute((aligned)) guaranteeing 16-byte alignment. It turns out that libc++abi doesn't declare the structure with attribute((aligned)) and therefore only guarantees 8-byte alignment on 32-bit and 64-bit platforms. This caused a crash in some cases when the backend emitted SIMD store instructions that requires 16-byte alignment (such as movaps).
This patch makes ItaniumCXXABI::getAlignmentOfExnObject return an 8-byte alignment on Darwin to fix the crash.
Just add a ExnObjectAlignment field to TargetInfo, please. We already have a DarwinTargetInfo mix-in that can set this to something lower.
Otherwise, this patch LGTM, although as mentioned elsewhere we should figure out whether other OSes also limit this more strictly.