This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/63302] [4.9 Regression] Code with 64-bit long long constants is miscompiled on 32-bit host
- From: "dave.anglin at bell dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 28 Sep 2014 14:34:14 +0000
- Subject: [Bug tree-optimization/63302] [4.9 Regression] Code with 64-bit long long constants is miscompiled on 32-bit host
- Auto-submitted: auto-generated
- References: <bug-63302-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63302
--- Comment #7 from dave.anglin at bell dot net ---
On 28-Sep-14, at 1:30 AM, zhenqiang.chen at arm dot com wrote:
> I double checked the function optimize_range_tests_diff. Overall, I
> think it
> does the right thing. X86 and ARM work correctly. The ldil.c.
> 169t.optimized is
>
> <bb 2>:
> x_2 = ival_1(D) & -2147481601;
> _8 = x_2 + 2147483648;
> _9 = _8 & -2147483649;
> _10 = _9 == 0;
> _6 = (int) _10;
> return _6;
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.
Dave
--
John David Anglin dave.anglin@bell.net