I did initially start off like this in my testing but isn't is cleaner and more readable to just a single line instruction for the compiler?
In the first place, I am not sure that dropping dangling clobber like that is correct, or it is not very obvious. Not sure we can assume such an implicit dependency between C statements and inlined asm code clobbers, I think clobbers specification is meant for hinting about registers clobbered in the same asm block.
Yes, but it does also affect movaps generation for some reason, and there's no loops in OpenThread which is why I suggested it.
Maybe, for some reason, but it may be by chance and not be guaranteed to stay the same across different compilers (for one, we support clang also). Maybe it is possible to design some universal macro which will realign stack and call to specified function. Or even support that as an .spec file attribute to generate such a thunk in winegcc. My main point is that such thing pops up from time to time and adding special asm wrapper for a random function which DRM happened to call this way while it has movaps by chance might be not particularly appealing, while if that is just a matter of putting and attribute on function, entry in spec file or a one line macro call we may easily add those as needed. Perhaps we'd need some input from Alexandre on the preferred direction before going far with it. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11069#note_142237