On 10/15/19 7:58 AM, Rainer Orth wrote:
Hi Aldy,
~[0,0] has been the accepted way for a long time, I'd really prefer to
keep that (for now).
It has. Very true. But I don't necessarily think that means we should
be introducing even more of 'em.
[...]
Happily, normalizing into ~0 for signed and [1,MAX] for unsigned,
simplified the patch because it on longer needs tweaks to
ranges_from_anti_range.
OK for trunk?
the new testcase FAILs on several (all?) 32-bit targets:
+FAIL: gcc.dg/tree-ssa/evrp4.c scan-tree-dump evrp "\\\\[1B, -1B\\\\]"
That's unfortunate.
Is this the only test that is failing?
I'm seeing this on 32-bit i386-pc-solaris2.11 and sparc-sun-solaris2.11,
with more reports for armv8l, pru, and s390x.
Comparing the dumps between 64 and 32-bit, I see
-_1: int * [1B, -1B]
+_1: int * [1B, 4294967295B]
I wonder why 32-bit targets at displaying 4294967295 instead of -1. Or
are pointers 64-bits here?
I wonder if we should just change value_range_base::dump() to dump
~[0,0] for ::nonzero_p(), that way we have a consistent way of
*displaying* non-zeroness for tests.
Aldy