On Tue, Nov 26, 2019 at 09:07:11AM +0100, Richard Biener wrote:
> OK.
> 
> It just occured to me - what if we'd use the type of the non-constant
> argument for creating the adjusted constant?  Wouldn't that avoid
> the issue as well?

No, the type type of the non-constant argument is NULLPTR_TYPE too.
I guess we could have some VRP optimization that range of NULLPTR_TYPE is
[0, 0], but I think we don't really perform VRP on
non-INTEGRAL/POINTER_TYPE_P, still, phiopt couldn't rely on that.

What could work is checking the PHI args earlier if at least one of them
matches the non-constant one, but I think that would break the
         if (a <= u)
           b = MAX (a, d);
         x = PHI <b, u>
opt.  In particular, on this exact testcase the EQ/NE transformation to
non-equality comparison is useless, as it will not really match.  But say
with pointers it could hit even if it is not useless.

        Jakub

Reply via email to