| /* PR middle-end/16790. */ |
| |
| extern void abort (); |
| |
| static void test1(unsigned int u1) |
| { |
| unsigned int y_final_1; |
| signed short y_middle; |
| unsigned int y_final_2; |
| |
| y_final_1 = (unsigned int)( (signed short)(u1 * 2) * 3 ); |
| y_middle = (signed short)(u1 * 2); |
| y_final_2 = (unsigned int)( y_middle * 3 ); |
| |
| if (y_final_1 != y_final_2) |
| abort (); |
| } |
| |
| |
| static void test2(unsigned int u1) |
| { |
| unsigned int y_final_1; |
| signed short y_middle; |
| unsigned int y_final_2; |
| |
| y_final_1 = (unsigned int)( (signed short)(u1 << 1) * 3 ); |
| y_middle = (signed short)(u1 << 1); |
| y_final_2 = (unsigned int)( y_middle * 3 ); |
| |
| if (y_final_1 != y_final_2) |
| abort (); |
| } |
| |
| |
| int main() |
| { |
| test1(0x4000U); |
| test2(0x4000U); |
| return 0; |
| } |
| |