On Thu, Oct 13, 2016 at 5:22 PM, Jeff Law <l...@redhat.com> wrote:
> On 10/12/2016 02:48 AM, Richard Biener wrote:
>>
>> On Tue, Oct 11, 2016 at 11:34 PM, Marc Glisse <marc.gli...@inria.fr>
>> wrote:
>>>
>>> On Tue, 11 Oct 2016, Bin Cheng wrote:
>>>
>>>> We missed folding (convert)(X op const) -> (convert)X op (convert)const
>>>> for unsigned narrowing because of reason reported at
>>>> https://gcc.gnu.org/ml/gcc/2016-07/msg00126.html
>>>> This patch fixes the issue by adding new match&simplify pattern, it also
>>>> adds a test case.  This is the prerequisite patch for next patch adding
>>>> new
>>>> vectorization pattern.
>>>
>>>
>>>
>>> Some technical comments below. I am sure Jeff and/or Richi will have more
>>> to
>>> say on the approach. I am a bit surprised to see it as adding a new
>>> transformation, instead of moving an old one.
>>
>>
>> The "old one" would be c-family/c-common.c:shorten_binary_op.  It's
>> generally
>> prefered to move stuff, preserving semantics.
>
> Right.   Kai and I hadn't looked much at shorten_binary_op (focusing more on
> shorten_compare).  But the same principles apply to both.
>
> Namely that the existing routines should be twiddled to handle warnings
> only, but not modify the underlying IL.  IL modifications (canonicalization
> and optimization) should be moved into the match.pd framework.

fortunately shorten_binary_op itself does not emit any warnings!

> When Kai left Red Hat, that work stalled.  I've got bits and pieces of that
> work lying around, but I don't think they'd help Bin's work right now.
>
>>
>> There is also already a bunch of similar match.pd patterns here:
>
> [ ... ]
> Right.   Those were a first start at handling some of the desired narrowing,
> focused primarily on BZs that required narrowing to resolve. Like Kai's
> work, I have some generalizations and improvements in a half-completed state
> here, but haven't had time to work on them.
>
>
> Jeff

Reply via email to