This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PR72835] Incorrect arithmetic optimization involving bitfield arguments


On Tue, Aug 9, 2016 at 2:42 PM, kugan <kugan.vivekanandarajah@linaro.org> wrote:
>
>
> On 09/08/16 23:43, kugan wrote:
>>
>> Hi,
>>
>> The test-case in PR72835 is failing with -O2 and passing with
>> -fno-tree-reassoc. It also passes with -O2 -fno-tree-vrp.
>>
>> diff of .115t.dse2 and .116t.reassoc1 for the c++ testcase is as
>> follows, which looks OK.
>>
>> +  unsigned int _16;
>> +  unsigned int _17;
>> +  unsigned int _18;
>>
>>     <bb 2>:
>>     _1 = s1.m2;
>>     _2 = (unsigned int) _1;
>>     _3 = s1.m3;
>>     _4 = (unsigned int) _3;
>> -  _5 = -_4;
>> -  _6 = _2 * _5;
>> +  _5 = _4;
>> +  _6 = _5 * _2;
>>     var_32.0_7 = var_32;
>>     _8 = (unsigned int) var_32.0_7;
>>     _9 = s1.m1;
>>     _10 = (unsigned int) _9;
>> -  _11 = -_10;
>> -  _12 = _8 * _11;
>> -  c_14 = _6 + _12;
>> +  _11 = _10;
>> +  _12 = _11 * _8;
>> +  _16 = _12 + _6;
>> +  _18 = _16;
>> +  _17 = -_18;
>> +  c_14 = _17;
>>     if (c_14 != 4098873984)
>>
>>
>> However, I noticed that when we re-associate and assign different
>> operands to the stmts, we are not resetting the flow information to the
>> LHS. This looks wrong. Attached patch resets it. With this, the
>> testcases in TH PR is now working.
>>
>>
>> Bootstrap and regression testing for x86_64-linux-gnu is in progress. Is
>> this OK for trunk if there is no regression.
>
>
> There was no new regression while testing. I also moved the testcase from
> gcc.dg/torture/pr72835.c to gcc.dg/tree-ssa/pr72835.c. Is this OK for trunk?


Why did you move the test-case from gcc.dg/torture to gcc.dg/tree-ssa?
 I think most executable testcases (that was using standard options)
should be in tortue testcases to do a full sweep of the options.

Thanks,
Andrew

>
> Thanks,
> Kugan
>
> gcc/testsuite/ChangeLog:
>
> 2016-08-10  Kugan Vivekanandarajah  <kuganv@linaro.org>
>
>         PR tree-optimization/72835
>         * gcc.dg/tree-ssa/pr72835.c: New test.
>
> gcc/ChangeLog:
>
> 2016-08-10  Kugan Vivekanandarajah  <kuganv@linaro.org>
>
>
>         PR tree-optimization/72835
>         * tree-ssa-reassoc.c (rewrite_expr_tree): Reset value_range of LHS
> when
>         operands are changed.
>         (rewrite_expr_tree_parallel): Likewise.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]