https://gcc.gnu.org/bugzilla/show_bug.cgi?id=31178
--- Comment #13 from Andrew Macleod <amacleod at redhat dot com> ---
huh, so even after fixing the testcase, ranger is still tripping over this test
case.
uv1ti ashl_v1ti (uv1ti x, unsigned int i)
{
uv1ti _3;
<bb 2> :
_3 = x_1(D) << i_2(D);
return _3;
we have an ssa_name for x_1 with a type of uvlti.
This passes the INTEGRAL_TYPE_P test and an ssa_name is created, but is it
actually a vector_type. This seems to be OK, but being unaware of this, and
having a type which passes the INTEGRAL_TYPE_P (type), I was using
TYPE_PRECISION (type) to find the upper bounds for i_2.
It appears that if VECTOR_TYPE_P (type) is true, then TYPE_PRECISION (type) is
not a valid request? but it silently returns 0 and happily moves on.
As near as I can tell, I am suppose to ask for:
TYPE_PRECISION (TREE_TYPE (type)) when its a VECTOR_TYPE?
IS there a good reason we don't fill in the TYPE_PRECISION field? Or if its
not suppose to be used, then can we trap on it if its passed a vector type? It
seems like the sort of thing that is easy to trip over. Are their other bits
which make VECTOR_TYPE incompatible with scalar INTGERAL_TYPEs that should not
be queried?