[Bug tree-optimization/63302] [4.9 Regression] Code with 64-bit long long constants is miscompiled on 32-bit host
dave.anglin at bell dot net
gcc-bugzilla@gcc.gnu.org
Sun Sep 28 14:47:00 GMT 2014
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.anglin@bell.net
More information about the Gcc-bugs
mailing list