| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fno-tree-loop-optimize -fdump-tree-optimized" } */ |
| |
| #define PREC (__CHAR_BIT__) |
| |
| #if __SIZEOF_INT__ < 4 |
| #define int __INT32_TYPE__ |
| #endif |
| |
| int clz_count1 (unsigned char b) { |
| int c = 0; |
| |
| if (b == 0) |
| return 0; |
| |
| while (!(b & (1 << (PREC - 1)))) { |
| b <<= 1; |
| c++; |
| } |
| if (c <= PREC - 1) |
| return 0; |
| else |
| return 34567; |
| } |
| |
| int clz_count2 (unsigned char b) { |
| int c = 0; |
| |
| if (b == 0) |
| return 0; |
| |
| while (!(b & (1 << PREC - 1))) { |
| b <<= 1; |
| c++; |
| } |
| if (c <= PREC - 2) |
| return 0; |
| else |
| return 76543; |
| } |
| |
| int ctz_count1 (unsigned char b) { |
| int c = 0; |
| |
| if (b == 0) |
| return 0; |
| |
| while (!(b & 1)) { |
| b >>= 1; |
| c++; |
| } |
| if (c <= PREC - 1) |
| return 0; |
| else |
| return 23456; |
| } |
| |
| int ctz_count2 (unsigned char b) { |
| int c = 0; |
| |
| if (b == 0) |
| return 0; |
| |
| while (!(b & 1)) { |
| b >>= 1; |
| c++; |
| } |
| if (c <= PREC - 2) |
| return 0; |
| else |
| return 65432; |
| } |
| /* { dg-final { scan-tree-dump-times "34567" 0 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-times "76543" 1 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-times "23456" 0 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-times "65432" 1 "optimized" } } */ |