This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug lto/50165] [4.7 Regression] Huge build time regression (Firefox lto build)
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 24 Aug 2011 10:46:17 +0000
- Subject: [Bug lto/50165] [4.7 Regression] Huge build time regression (Firefox lto build)
- Auto-submitted: auto-generated
- References: <bug-50165-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50165
--- Comment #7 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-08-24 10:46:17 UTC ---
(In reply to comment #6)
> (In reply to comment #4)
> > > -
> > > - if (ds1->len == ds2->len)
> > > - return memcmp (ds1->s, ds2->s, ds1->len) == 0;
> > > -
> > > - return 0;
> > > + return strcmp (ds1->s, ds2->s) == 0;
> > > }
> > >
> > > /* Returns a new bit-packing context for bit-packing into S. */
> >
> > Can you check if keeping the ds1->len == ds2->len check in eq_string_slot_node
> > but using strcmp works as well? If not, then it seems ->len is not
> > properly initialized in all cases (which would explain that changing the
> > hash is also important).
>
> No, keeping the (ds1->len == ds2->len) check doesn't work.
Oh dear. I'll leave it for Diego to investigate then :)
At this point (well, and everywhere else, including in the hash function)
gcc_assert (ds1->len == strlen (ds1->s) + 1
&& ds2->len == strlen (ds2->s) + 1);
should hold.