@@ -489,13 +489,12 @@ get_nonzero_bits (const_tree name)
return wi::shwi (-1, precision);
}
- if (!range_info_p (name))
+ if (!range_info_p (name) || !irange::supports_p (TREE_TYPE (name)))
return wi::shwi (-1, precision);
/* Optimization to get at the nonzero bits because we know the
storage type. This saves us measurable time compared to going
through vrange_storage. */
- gcc_checking_assert (irange::supports_p (TREE_TYPE (name)));
irange_storage_slot *ri
= static_cast <irange_storage_slot *> (SSA_NAME_RANGE_INFO (name));
return ri->get_nonzero_bits ();
@@ -280,16 +280,13 @@ get_ssa_name_range_info (vrange &r, const_tree name)
void *ri = SSA_NAME_RANGE_INFO (name);
- // Return VR_VARYING for SSA_NAMEs with NULL RANGE_INFO or SSA_NAMEs
- // with integral types width > 2 * HOST_BITS_PER_WIDE_INT precision.
- if (!ri || (GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (TREE_TYPE (name)))
- > 2 * HOST_BITS_PER_WIDE_INT))
- r.set_varying (type);
- else
+ if (ri)
{
vrange_storage vstore (NULL);
vstore.get_vrange (ri, r, TREE_TYPE (name));
}
+ else
+ r.set_varying (type);
}
// Return nonnull attribute of pointer NAME from SSA_NAME_PTR_INFO.