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