Based on Piotr's findings.
On MSVC i386 targets, structs requiring alignment greater than 4 are never passed by value. Clang follows the same behavior in MSVC mode (see [1] for details and [2] for a follow-up that applies this logic when fields, not necessarily the entire struct, are aligned).
A number of ios functions take fpos_mbstatet as an argument and expect it to be passed by value.
[1] https://reviews.llvm.org/D72114 [2] https://github.com/llvm/llvm-project/issues/63257
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57817
-- v3: msvcp60: Avoid explicitly aligning structs passed by value. msvcp: Avoid explicitly aligning structs passed by value.