On 05/11/25 17:18, Richard Biener wrote:
External email: Use caution opening links or attachments


On Wed, 5 Nov 2025, Dhruv Chawla wrote:

On 27/08/25 18:27, Richard Biener wrote:
External email: Use caution opening links or attachments


On Mon, 25 Aug 2025, [email protected] wrote:

From: Dhruv Chawla <[email protected]>

For ==, < and <=, the fold is to 0. For !=, > and >=, the fold is to 1.
This only applies when C != 0.

So -50 << 1 < 1 is true, so does this only work for unsigned types,
or tree_expr_nonnegative_p in addition to tree_expr_nonzero_p?
I've probably mislead you when asking to simply extend it to other compare
operators.  For == it should of course work when nonzero only.

Or am I missing something?

Why did you restrict this to #if GIMPLE in v2?

Hi Richi,

Sorry for the (very) long delay in getting back to you, I got quite badly
stuck trying various approaches with this patch. I have attached patch v3
to this email. The #if GIMPLE was something left over from v1, I had
forgotten to remove it.

The primary issue I ran into is that tree_expr_nonnegative_p doesn't really
work for function parameters (which was causing my tests to fail), because it
calls into gimple_stmt_nonnegative_warnv_p which doesn't work for the
GIMPLE_NOP
that params have as the gimple_code.

I tried extending tree_expr_nonnegative_p with something similar to
expr_not_equal_to but that kept causing ICEs/miscompiles that I couldn't
figure
out so I have left it as a FIXME in match-shift-cmp-1.c.

OK.

Thanks,
Richard.

Committed as c4ca512358be7cb1c8523f148fa84a57cbbf0060.

--
Regards,
Dhruv

Reply via email to