In the following code, the first element is aligned on a 16-byte boundary, but the remaining elements aren't:
typedef char int8_a16 __attribute__((aligned(16))); int8_a16 array[4];
Currently clang doesn't reject the code, but it should since it can cause crashes at runtime. This patch also fixes assertion failures in CodeGen caused by the changes in https://reviews.llvm.org/D123649.