On Mon, 4 May 2015, Richard Biener wrote:

On Sat, May 2, 2015 at 12:46 AM, Marc Glisse <marc.gli...@inria.fr> wrote:
Hello,

this patch tries to tighten a bit the range estimate for x%y. slp-perm-7.c
started failing by vectorizing more than expected, I assumed it was a good
thing and updated the test. I am less conservative than Jakub with division
by 0, but I still don't really understand how empty ranges are supposed to
be represented in VRP.

Bootstrap+testsuite on x86_64-linux-gnu.

Hmm, so I don't like how you (continute to) use trees for the constant computations. wide-ints would be a better fit today. I also notice that fold_unary_to_constant can return NULL_TREE and neither the old nor your code handles that.

You are right. I was lazy and tried to keep this part of the old code, I shouldn't have...

"empty" ranges are basically UNDEFINED.

Cool, that's what I did. But I don't see code adding calls to __builtin_unreachable() when an empty range is detected. Maybe that almost never happens?

Aren't you pessimizing the case where the old code used value_range_nonnegative_p() by just using TYPE_UNSIGNED?

I don't think so. The old code only handled signed types in the positive case, while I have a more complete handling of signed types, which should do at least as good as the old one even in the positive case.

--
Marc Glisse

Reply via email to