1 /* PR rtl-optimization/83565 */ 2 /* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */ 3 4 extern void abort (void); 5 6 typedef __UINT32_TYPE__ u32; 7 8 u32 bug (u32 * result) __attribute__((noinline)); bug(u32 * result)9u32 bug (u32 * result) 10 { 11 volatile u32 ss = 0xFFFFffff; 12 volatile u32 d = 0xEEEEeeee; 13 u32 tt = d & 0x00800000; 14 u32 r = tt << 8; 15 16 r = (r >> 31) | (r << 1); 17 18 u32 u = r^ss; 19 u32 off = u >> 1; 20 21 *result = tt; 22 return off; 23 } 24 main(void)25int main(void) 26 { 27 u32 l; 28 u32 off = bug(&l); 29 if (off != 0x7fffffff) 30 abort (); 31 return 0; 32 } 33