The detailed description of the issue could be found in
https://bugs.llvm.org/show_bug.cgi?id=51277.
In the original code, the 'getDeclAlignIfRequired' function is used.
The 'getDeclAlignIfRequired' function will return the max alignment
of all aligned attributes if the type has aligned attributes. The
function doesn’t consider the type at all.
The 'getTypeAlignIfRequired' function uses the type’s alignment value,
which also used by the 'alignof' function. I think we should use the
function of 'getTypeAlignIfRequired'.
You can drop the "struct" here and from other references to these types (in mt1/mt2 and the alignof calls)