> > I've seen us merge different named structs which happen to reside > on the same variant list. That's bogus, not only because we are > adjusting TYPE_MAIN_VARIANT during incremental type-merging and > fixup, so computing a persistent hash by looking at it looks > fishy as well.
Hi, as reported on IRC earlier, I get the segfault while building libxul duea to infinite recursion problem. I now however also get a lot more of the following ICEs: In function '__unguarded_insertion_sort': lto1: internal compiler error: in splice_child_die, at dwarf2out.c:8274 previously it reported once during Mozilla build (and I put testcase into bugzilla), now it reproduces on many libraries. I did not see this problem when applying only the SCC hasing change. perhaps another unrelated thing, but I now also get undefined symbols during the builds. Honza > > Bootstrapped and tested on x86_64-unknown-linux-gnu. > > Richard. > > 2011-05-16 Richard Guenther <rguent...@suse.de> > > * gimple.c (gimple_types_compatible_p_1): Use names of the > type itself, not its main variant. > (iterative_hash_gimple_type): Likewise. > > Index: gcc/gimple.c > =================================================================== > *** gcc/gimple.c (revision 173794) > --- gcc/gimple.c (working copy) > *************** gimple_types_compatible_p_1 (tree t1, tr > *** 3817,3824 **** > tree f1, f2; > > /* The struct tags shall compare equal. */ > ! if (!compare_type_names_p (TYPE_MAIN_VARIANT (t1), > ! TYPE_MAIN_VARIANT (t2), false)) > goto different_types; > > /* For aggregate types, all the fields must be the same. */ > --- 3817,3823 ---- > tree f1, f2; > > /* The struct tags shall compare equal. */ > ! if (!compare_type_names_p (t1, t2, false)) > goto different_types; > > /* For aggregate types, all the fields must be the same. */ > *************** iterative_hash_gimple_type (tree type, h > *** 4193,4199 **** > unsigned nf; > tree f; > > ! v = iterative_hash_name (TYPE_NAME (TYPE_MAIN_VARIANT (type)), v); > > for (f = TYPE_FIELDS (type), nf = 0; f; f = TREE_CHAIN (f)) > { > --- 4192,4198 ---- > unsigned nf; > tree f; > > ! v = iterative_hash_name (TYPE_NAME (type), v); > > for (f = TYPE_FIELDS (type), nf = 0; f; f = TREE_CHAIN (f)) > {