Re: strcmp is too heavy for its everyday usage...
James Antill <[email protected]> Wed, 14 Jan 2004 00:09:18 -0500
| Newsgroups | org.kernel.vger.linux-gcc |
|---|---|
| Message-ID | <[email protected]> |
Richard Henderson <[email protected]> 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 -- [email protected] :0: * ^From: .*james@and\.org /dev/null