This patch adds the different alignment assert for the x86 MSVC case. It is because x86 MSVC doesn't apply automatically (without __declspec(align(...))) alignments more than 4 bytes, even if alignof has returned so. Consider the example:
Here alignof for both S0 and S1 returns 8, but only S1 is really aligned on x86. The explanation of this behavior is here:
https://docs.microsoft.com/en-us/cpp/build/conflicts-with-the-x86-compiler