Hallo Denys! > On Tue, Aug 9, 2011 at 7:33 PM, Rich Felker <[email protected]> wrote: >> On Tue, Aug 09, 2011 at 09:37:58AM +0200, Denys Vlasenko wrote: >>> #define isalnum(a) bb_ascii_isalnum(a) >>> static ALWAYS_INLINE int bb_ascii_isalnum(unsigned char a) >>> { >>> unsigned char b = a - '0'; >>> if (b <= 9) >>> return (b <= 9); >>> b = (a|0x20) - 'a'; >>> return b <= 'z' - 'a'; >>> } >> I'm scared to ask why this is written in such an obfuscated way rather >> than just >> >> return a-'0'<10U || (a|32)-'a'<26U; > Tried it. Bloatcheck: > [...]
FYI: I tried it too ... test this version: return (unsigned char)(a-'0')<10U || (unsigned char)((a|32)-'a')<26U; ... may look obscure, but influences the way gcc produces code! May be you need to fiddle with type casting the other arguments in the expression :-( -- Harald _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
