/* PR rtl-optimization/83565 */ | |
/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */ | |
extern void abort (void); | |
typedef __UINT32_TYPE__ u32; | |
u32 bug (u32 * result) __attribute__((noinline)); | |
u32 bug (u32 * result) | |
{ | |
volatile u32 ss = 0xFFFFffff; | |
volatile u32 d = 0xEEEEeeee; | |
u32 tt = d & 0x00800000; | |
u32 r = tt << 8; | |
r = (r >> 31) | (r << 1); | |
u32 u = r^ss; | |
u32 off = u >> 1; | |
*result = tt; | |
return off; | |
} | |
int main(void) | |
{ | |
u32 l; | |
u32 off = bug(&l); | |
if (off != 0x7fffffff) | |
abort (); | |
return 0; | |
} |