------- 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