I don't understand why we want to avoid overallocation? The union is ~600B and there's like a hundred of them declared statically, that's not really a concern.
This could be imho be better fixed by correctly using the union everywhere. I have https://gitlab.winehq.org/rbernon/wine/-/commit/91cbddf4801de376f9dbc6e6c945... locally, am I missing something?