------- Comment #2 from rguenth at gcc dot gnu dot org 2007-03-20 10:43 -------
I see on x86_64 with -O2 (vrp can cleanup this somewhat):
in_canforward:
.LFB2:
movl %edi, %eax
andl $240, %eax
cmpl $240, %eax
je .L4
cmpl $224, %eax
je .L4
testb %dil, %dil
movl $1, %eax
js .L5
movl %edi, %eax
andl $255, %eax
sete %dl
cmpl $127, %eax
sete %al
orl %eax, %edx
xorl $1, %edx
movzbl %dl, %eax
.L5:
rep ; ret
.p2align 4,,7
.L4:
xorl %eax, %eax
ret
which looks in structure like what you are expecting.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31272