It seems that it's not just cwtl that gets used unnecessarily. The same thing happens with out extension instructions, e.g., movzwl:
Disassembly of section .text: 00000000 <foo>: #include <ctype.h> int foo(int c) { 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp return isdigit(c); 3: 8b 45 08 mov 0x8(%ebp),%eax 6: 8b 15 00 00 00 00 mov 0x0,%edx 8: R_386_32 __ctype_b c: 66 8b 04 42 mov (%edx,%eax,2),%ax 10: 25 00 08 00 00 and $0x800,%eax 15: 0f b7 c0 movzwl %ax,%eax } 18: 5d pop %ebp 19: c3 ret -- Debian GNU/Linux 2.2 is out! ( http://www.debian.org/ ) Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt