1 /* PR middle-end/16790. */ 2 3 extern void abort (); 4 test1(unsigned int u1)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 test2(unsigned int u1)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 main()35int main() 36 { 37 test1(0x4000U); 38 test2(0x4000U); 39 return 0; 40 } 41 42