strcmp is too heavy for its everyday usage...
James Antill
james@and.org
Wed Jan 14 05:09:00 GMT 2004
Richard Henderson <rth@twiddle.net> writes:
> On Fri, Jan 09, 2004 at 10:11:45AM +0500, Denis Zaitsev wrote:
>> (r= a[0] - b[0]) &&
>> (r= a[1] - b[1]) &&
>> (r= a[2] - b[2]) &&
>> (r= a[3] - b[3]);
>> return r;
>> }
>>
>> never do that, as it's not asked to. Or this kind of optimization is
>> assumed ok for compiler, but just still unimplemented?
>
> Certainly it's ok if it converts.
>
> However, on most targets you'd have to know that a and b are aligned.
> Worse, even for targets like x86 that support unaligned loads you have
> to know for certain that neither a[3] nor b[3] could possibly segv
> when a[0] and b[0] won't. That condition is trivial when a and b are
> aligned, but otherwise...
Fair enough, but...
extern int
s(const unsigned char a[static 4], const unsigned char b[static 4])
{
int r;
(r= a[0] - b[0]) &&
(r= a[1] - b[1]) &&
(r= a[2] - b[2]) &&
(r= a[3] - b[3]);
return r;
}
...produces the same code.
--
# James Antill -- james@and.org
:0:
* ^From: .*james@and\.org
/dev/null
More information about the Libc-alpha
mailing list