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  }