This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [patch] ld speedup 1/3 (suffix merge)
On Wed, Sep 10, 2003 at 01:54:57PM +0930, Alan Modra wrote:
> On Tue, Sep 09, 2003 at 06:06:06PM +0200, Michael Matz wrote:
> > Index: merge.c
> > +static int
> > +strrevcmp (const void *a, const void *b)
> > +{
> > + struct sec_merge_hash_entry *A = *(struct sec_merge_hash_entry **) a;
> > + struct sec_merge_hash_entry *B = *(struct sec_merge_hash_entry **) b;
> > +
> > + const unsigned char *s = A->root.string + A->len - A->u.entsize;
> > + const unsigned char *t = B->root.string + B->len - B->u.entsize;
> > +
> > + int l = A->len < B->len ? A->len : B->len;
> > + l -= (A->u.entsize - 1);
> > + while (l)
>
> This looks broken to me. The last u.entsize bytes won't be compared.
> Mind you, I think this was broken before.
I take that back. This code is only used on multi-byte strings which
require an all-zeros terminator, not on the non-string merge case.
--
Alan Modra
IBM OzLabs - Linux Technology Centre