/* { dg-do compile } */ | |
/* { dg-options "-O2 -fdump-tree-optimized" } */ | |
unsigned char f(unsigned char a) | |
{ | |
signed char d = (signed char) a; | |
signed char e = d & ~1; | |
unsigned char t = e; | |
t &= ~2; | |
return t; | |
} | |
/* The above should reduce down to just & 252 rather than keping | |
the two &s there. */ | |
/* { dg-final { scan-tree-dump-times "& 252" 1 "optimized"} } */ | |
/* { dg-final { scan-tree-dump-times "& -2" 0 "optimized"} } */ | |
/* { dg-final { scan-tree-dump-times "& 253" 0 "optimized"} } */ |