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

     1  extern void abort (void);
     2  
     3  int
     4  main ()
     5  {
     6    int i, j;
     7    unsigned long u, r1, r2;
     8  
     9    i = -16;
    10    j = 1;
    11    u = i + j;
    12  
    13    /* no sign extension upon shift */
    14    r1 = u >> 1;
    15    /* sign extension upon shift, but there shouldn't be */
    16    r2 = ((unsigned long) (i + j)) >> 1;
    17  
    18    if (r1 != r2)
    19      abort ();
    20  
    21    return 0;
    22  }