This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug lto/41598] bootstrap *using* lto fails
- From: "rguenther at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Oct 2009 21:03:57 -0000
- Subject: [Bug lto/41598] bootstrap *using* lto fails
- References: <bug-41598-16169@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #13 from rguenther at suse dot de 2009-10-12 21:03 -------
Subject: Re: bootstrap *using* lto fails
On Mon, 12 Oct 2009, espindola at google dot com wrote:
> ------- Comment #12 from espindola at google dot com 2009-10-12 21:02 -------
> (In reply to comment #9)
> > Ok, so the issue here is that we have
> >
> > typedef struct VEC_constructor_elt_gc { } VEC_constructor_elt_gc;
> >
> > vs.
> >
> > typedef struct VEC_constructor_elt_gcx { } VEC_constructor_elt_gc;
> >
> > which causes us to not merge the two union tree_node types which are
> >
> > typedef union tree_node *tree;
> > union tree_node {
> > tree * use;
> > VEC_constructor_elt_gc *elts;
> > };
> >
> > And in the end because we look through typedefs here:
> >
> > static hashval_t
> > iterative_hash_type_name (tree type, hashval_t v)
> > {
> > tree name = TYPE_NAME (TYPE_MAIN_VARIANT (type));
> >
> > Now this is necessary - we'd want to merge
> >
> > union tree_node {
> > tree * use;
> > struct VEC_constructor_elt_gc *elts;
> > };
> >
> > as well.
> >
> > So - this cannot be fixed by type merging, but instead together with what
> > we need to fix TBAA issues for non-merged types we have to try to cover
> > these issues as well.
>
> I am a bit confused why we cannot merge the types.
>
> If using structural equality, "struct VEC_constructor_elt_gc" and "struct
> VEC_constructor_elt_gcx" should be equivalent since they are both {}. With
> these being equivalent, the two typedefs defining VEC_constructor_elt_gc are
> equivalent and finally the two "union tree_node" also are.
We're not really using structural equality. I have patches to go
both ways (more structural equality and less), both cause some
regressions. So I'm digging somewhat further for now.
Richard.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41598