On Thu, Aug 11, 2016 at 11:56 AM, Bin.Cheng <amker.ch...@gmail.com> wrote:
> On Thu, Aug 11, 2016 at 10:50 AM, Richard Biener
> <richard.guent...@gmail.com> wrote:
>> On Wed, Aug 10, 2016 at 5:58 PM, Bin Cheng <bin.ch...@arm.com> wrote:
>>> Hi,
>>> Due to some reasons, tree-if-conv.c now factors floating point comparison 
>>> out of cond_expr,
>>> resulting in mixed types in it.  This does help CSE on common comparison 
>>> operations.
>>> Only problem is that test gcc.dg/vect/pr56541.c now requires 
>>> vect_cond_mixed to be
>>> vectorized.  This patch changes the test in that way.
>>> Test result checked.  Is it OK?
>>
>> Hmm, I think the fix is to fix if-conversion not doing that.  Can you
>> track down why this happens?
> Hmm, but there are several common floating comparison operations in
> the case, by doing this, we could do CSE on GIMPLE, otherwise we
> depends on RTL optimizers.

I see.

> I thought we prefer GIMPLE level
> transforms?

Yes, but the vectorizer is happier with the conditions present in the COND_EXPR
and thus we concluded we always want to have them there.  forwprop will
also aggressively put them back.  Note that we cannot put back
tree_could_throw_p
conditions (FP compares with signalling nans for example) to properly model EH
(though for VEC_COND_EXPRs we don't really care here).

Note that nothing between if-conversion and vectorization will perform
the desired
CSE anyway.

Richard.


> Thanks,
> bin
>>
>> Richard.
>>
>>> Thanks,
>>> bin
>>>
>>> gcc/testsuite/ChangeLog
>>> 2016-08-09  Bin Cheng  <bin.ch...@arm.com>
>>>
>>>         * gcc.dg/vect/pr56541.c: Require vect_cond_mixed.

Reply via email to