aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2021-01-22 14:32:39 +0100
committerRichard Biener <rguenther@suse.de>2021-01-22 15:23:54 +0100
commit4be156d6bef317b8704052f11431457a577ed564 (patch)
treebc045cc2a7a8b2aebcc5d6de30a3619cb2f5324e /gcc/tree.c
parente3a8ef8ef2ac077b393687624b09db6ab31c7746 (diff)
downloadgcc-4be156d6bef317b8704052f11431457a577ed564.zip
gcc-4be156d6bef317b8704052f11431457a577ed564.tar.gz
gcc-4be156d6bef317b8704052f11431457a577ed564.tar.bz2
middle-end/98793 - properly handle BLKmode vectors in vector_element_bits
The previous change made AVX512 mask vectors correct but disregarded the possibility of generic (BLKmode) boolean vectors which are exposed by the frontends already. 2021-01-22 Richard Biener <rguenther@suse.de> PR middle-end/98793 * tree.c (vector_element_bits): Key single-bit bool vector on integer mode rather than not vector mode. * gcc.dg/pr98793.c: New testcase.
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 061fe43..87862be 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -14028,11 +14028,11 @@ vector_element_bits (const_tree type)
gcc_checking_assert (VECTOR_TYPE_P (type));
if (VECTOR_BOOLEAN_TYPE_P (type))
{
- if (VECTOR_MODE_P (TYPE_MODE (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));
- else
- return 1;
}
return tree_to_uhwi (TYPE_SIZE (TREE_TYPE (type)));
}