1/* PR middle-end/16790.  */
2
3extern void abort ();
4
5static void test1(unsigned int u1)
6{
7  unsigned int y_final_1;
8  signed short y_middle;
9  unsigned int y_final_2;
10
11  y_final_1 = (unsigned int)( (signed short)(u1 * 2) * 3 );
12  y_middle  =                 (signed short)(u1 * 2);
13  y_final_2 = (unsigned int)( y_middle * 3 );
14
15  if (y_final_1 != y_final_2)
16    abort ();
17}
18
19
20static void test2(unsigned int u1)
21{
22  unsigned int y_final_1;
23  signed short y_middle;
24  unsigned int y_final_2;
25
26  y_final_1 = (unsigned int)( (signed short)(u1 << 1) * 3 );
27  y_middle  =                 (signed short)(u1 << 1);
28  y_final_2 = (unsigned int)( y_middle * 3 );
29
30  if (y_final_1 != y_final_2)
31    abort ();
32}
33
34
35int main()
36{
37  test1(0x4000U);
38  test2(0x4000U);
39  return 0;
40}
41
42