To Martin: So I disagree. The gc header is not responsible for alignment in the first place, but to propagate it, correctly.
I think we are in agreement in this respect. That's the whole point of the long double: to make the gc head's alignment the maximum alignment on that platform
And this fails miserably (in principle) since years.
Here I agree. In principle, it works fine - it is just perhaps incomplete.
Proposal: We should use a simple construct that makes the gc header size simply a multiple of 8 or 16, whatever needed. Even a byte array would be ok.
How would you implement that? In particular, how do you determine what is needed?
But please no long double :-)
Well, the long double needs to stay, as for some platforms, long double is indeed the type with the maximum alignment. I propose to add another (regular) double into the union. Regards, Martin