1  /* PR c/19606
       2     The C front end used to shorten the type of a division to a type
       3     that does not preserve the semantics of the original computation.
       4     Make sure that won't happen.  */
       5  
       6  signed char a = -4;
       7  
       8  int
       9  foo (void)
      10  {
      11    return ((unsigned int) (signed int) a) / 2LL;
      12  }
      13  
      14  int
      15  bar (void)
      16  {
      17    return ((unsigned int) (signed int) a) % 5LL;
      18  }
      19  
      20  int
      21  main (void)
      22  {
      23    int r;
      24  
      25    r = foo ();
      26    if (r != ((unsigned int) (signed int) (signed char) -4) / 2LL)
      27      abort ();
      28  
      29    r = bar ();
      30    if (r != ((unsigned int) (signed int) (signed char) -4) % 5LL)
      31      abort ();
      32  
      33    exit (0);
      34  }