/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ int test1(unsigned int x, unsigned int y) { #if __SIZEOF_INT__ == 4 unsigned int r1 = (x << 16) | (x >> 16); unsigned int r2 = (y << 16) | (y >> 16); return r1 == r2; #else return x == y; #endif } int test2(unsigned int x) { #if __SIZEOF_INT__ == 4 unsigned int r1 = (x << 16) | (x >> 16); return r1 == 12345; #else return x == 12345; #endif } int test3(unsigned int x) { #if __SIZEOF_INT__ == 4 unsigned int r1 = (x << 16) | (x >> 16); return r1 == 0; #else return x == 0; #endif } int test4(unsigned int x) { #if __SIZEOF_INT__ == 4 unsigned int r1 = (x << 16) | (x >> 16); return r1 == ~0; #else return x == ~0; #endif } /* { dg-final { scan-tree-dump-times "r>>" 0 "optimized" } } */