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)9 u32 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)25 int main(void)
26 {
27   u32 l;
28   u32 off = bug(&l);
29   if (off != 0x7fffffff)
30     abort ();
31   return 0;
32 }
33