aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2021-01-25 11:22:28 +0100
committerRichard Biener <rguenther@suse.de>2021-01-25 13:18:13 +0100
commitdefc40db9e09ecceb2d71727031fe9579bce1b11 (patch)
treea7a28892322f7e32224d0ab1c09725d564df942a /gcc/tree.c
parent0433fc2d7d44eafd61017cd0b6c4cab1fcb16990 (diff)
downloadgcc-defc40db9e09ecceb2d71727031fe9579bce1b11.zip
gcc-defc40db9e09ecceb2d71727031fe9579bce1b11.tar.gz
gcc-defc40db9e09ecceb2d71727031fe9579bce1b11.tar.bz2
middle-end/98807 - more vector_element_bits fixes
This simplifies vector_element_bits further, avoiding any mode dependence and instead relying on boolean vector construction to populate element precision accordingly. 2021-01-25 Richard Biener <rguenther@suse.de> PR middle-end/98807 * tree.c (vector_element_bits): Always use precision of the element type for boolean vectors. * gcc.dg/pr98807.c: New testcase.
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 87862be..287e500 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -14027,13 +14027,7 @@ vector_element_bits (const_tree type)
{
gcc_checking_assert (VECTOR_TYPE_P (type));
if (VECTOR_BOOLEAN_TYPE_P (type))
- {
- if (SCALAR_INT_MODE_P (TYPE_MODE (type)))
- return 1;
- else
- return vector_element_size (tree_to_poly_uint64 (TYPE_SIZE (type)),
- TYPE_VECTOR_SUBPARTS (type));
- }
+ return TYPE_PRECISION (TREE_TYPE (type));
return tree_to_uhwi (TYPE_SIZE (TREE_TYPE (type)));
}