Hello, we are compiling our game on Windows with Clang. After a particular cloth asset was submitted, the game started to crash when an actor with that asset was loaded. We tracked it down to an issue with Clang (see https://github.com/llvm/llvm\-project/issues/134694 ) - in these specific circumstances (clang-cl, /Zp8, actual SIMD type wrapped in a template), it ignores the alignment requirement (16 bytes) of TSpatialHashGridPoints::CellSize, aligning it on 8 bytes instead, and that causes a crash when doing the division:
divps xmm0,xmmword ptr [r8+28h]
This can be worked around by adding a redundant alignas specifier to the CellSize, as detailed in the LLVM Project GitHub issue, however what interests me is that given that the problem only manifests when using clang-cl and passing it the /Zp8 flag, why is it passed in the first place? It is being added in VCToolChain.cs since before 5.0. MSVC documentation ( https://learn.microsoft.com/en\-us/cpp/build/reference/zp\-struct\-member\-alignment?view\=msvc\-170 ) specifically says _not_ to use non-default alignment when including Windows headers - was the opposite a requirement at some point?