/* { dg-do compile } */ /* { dg-options "-O2 -mtune=core2" } */ unsigned char foo (unsigned char x, int y) { int _1 = (int) x; int _2 = _1 >> y; int _3 = _2 & 1; unsigned char _8 = (unsigned char) _3; unsigned char _6 = _8 ^ 1; return _6; } /* { dg-final { scan-assembler "btl" } } */ /* { dg-final { scan-assembler "setnc" } } */ /* { dg-final { scan-assembler-not "sarl" } } */ /* { dg-final { scan-assembler-not "andl" } } */ /* { dg-final { scan-assembler-not "xorl" } } */