https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63302
--- Comment #8 from dave.anglin at bell dot net --- On 28-Sep-14, at 10:34 AM, dave.anglin at bell dot net wrote: > This is what I see on the trunk, but 4.9 is wrong. Possibly, there is > a transformation > after optimize_range_tests_diff where things go wrong on 4.9. It seems the difference actually occurs in reassoc1. 4.9: <bb 2>: x_2 = ival_1(D) & -2147481601; _3 = x_2 == 0; _8 = x_2 & 2147483647; _9 = _8 == 0; _4 = x_2 == -2147483648; _5 = _9; _6 = (int) _5; return _6; trunk: <bb 2>: x_2 = ival_1(D) & -2147481601; _3 = x_2 == 0; _8 = x_2 + 2147483648; _9 = _8 & -2147483649; _10 = _9 == 0; _4 = x_2 == -2147483648; _5 = _10; _6 = (int) _5; return _6; The preceding dse1 is same for both branches: <bb 2>: x_2 = ival_1(D) & -2147481601; _3 = x_2 == 0; _4 = x_2 == -2147483648; _5 = _3 | _4; _6 = (int) _5; return _6; -- John David Anglin dave.ang...@bell.net