diff options
author | Richard Biener <rguenther@suse.de> | 2021-01-22 14:32:39 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2021-01-22 15:23:54 +0100 |
commit | 4be156d6bef317b8704052f11431457a577ed564 (patch) | |
tree | bc045cc2a7a8b2aebcc5d6de30a3619cb2f5324e /gcc/tree.c | |
parent | e3a8ef8ef2ac077b393687624b09db6ab31c7746 (diff) | |
download | gcc-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.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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))); } |