modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20180112-1.c (about)

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