This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug lto/52178] [4.7 regression] Ada bootstrap failure in LTO mode
- From: "ebotcazou at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 10 Feb 2012 17:51:19 +0000
- Subject: [Bug lto/52178] [4.7 regression] Ada bootstrap failure in LTO mode
- Auto-submitted: auto-generated
- References: <bug-52178-4@http.gcc.gnu.org/bugzilla/>
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.