| /* 20050922-1.c does not trigger the expand_shift rotate bug on sh4-elf, but |
| this does. */ |
| |
| /* { dg-do run } */ |
| /* { dg-options "-O1 -std=c99" } */ |
| |
| extern void abort (void); |
| extern void exit (int); |
| |
| #if __INT_MAX__ == 2147483647 |
| typedef unsigned int uint32_t; |
| #elif __LONG_MAX__ == 2147483647 |
| typedef unsigned long uint32_t; |
| #else |
| #error unable to find 32-bit integer type |
| #endif |
| |
| #define rotl(x,n) (((x) << ((int)(n))) | ((x) >> (32 - (int)(n)))) |
| |
| uint32_t |
| f (uint32_t a, uint32_t b) |
| { |
| |
| b = rotl (a, b & 31); |
| return b; |
| } |
| |
| int |
| main () |
| { |
| if (f(2,31) != 1) |
| abort (); |
| exit (0); |
| } |