[patch] ld speedup 1/3 (suffix merge)

Alan Modra amodra@bigpond.net.au
Wed Sep 10 04:25:00 GMT 2003


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.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre



More information about the Binutils mailing list