One of the way to achieve encapsulation in C, is to have a certain definition of a structure in the implementation file, that you use internally, and a different (usually smaller, sometimes no structure at all, just a handle), exposed to the public (in the header).
As far as I can see, this would break this approach, (if this strict type aliasing would also be used at LTO).