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
foo(void)9 foo (void)
10 {
11   return ((unsigned int) (signed int) a) / 2LL;
12 }
13 
14 int
bar(void)15 bar (void)
16 {
17   return ((unsigned int) (signed int) a) % 5LL;
18 }
19 
20 int
main(void)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 }
35