The __unaligned keyword can appear after a struct definition:
struct foo {...} __unaligned *x;
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223412
91177308-0d34-0410-b5e6-
96231b3b80d8
case tok::kw_volatile: // struct foo {...} volatile x;
case tok::kw_restrict: // struct foo {...} restrict x;
case tok::kw__Atomic: // struct foo {...} _Atomic x;
+ case tok::kw___unaligned: // struct foo {...} __unaligned *x;
// Function specifiers
// Note, no 'explicit'. An explicit function must be either a conversion
// operator or a constructor. Either way, it can't have a return type.
// __unaligned handling
typedef char __unaligned *aligned_type;
+typedef struct UnalignedTag { int f; } __unaligned *aligned_type2;
template<typename T> void h1(T (__stdcall M::* const )()) { }