http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52178
--- Comment #2 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-02-10 17:51:19 UTC --- > I don't understand this sentence completely - if the types have been merged > then the COMPONENT_REFs should have been updated, too (do they only have > "weak" matched types at the point of LTO streaming? Thus, do they maybe > depend on the frontend TYPE_CANONICAL setting?) The Ada front-end doesn't touch TYPE_CANONICAL at all. It's the same type, but instantiated from different units. What I don't understand is when type merging is supposed to be done: WPA, LTRANS, or both? > Unless the COMPONENT_REF in question comes from constant folding from > a global variable initializer for example (which is what the ??? is about)? No, it's in a simple assignment statement. > So - at which point during the compilation does the verification issue > happen? See the opening message, it's LTRANS. The type mismatch is already present when the assignment statement is streamed in at the beginning of LTRANS, as the streamed in FIELD_DECL isn't the original FIELD_DECL that was streamed out.