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

Reply via email to