From b246f5272eb7242a9cefe5b4e7220be9d86ea512 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Thu, 3 Sep 2020 12:44:40 +0200 Subject: Improve constant folding of vector lowering with vector bools This improves the situation somewhat when vector lowering tries to access vector bools as seen in PR96814. 2020-09-03 Richard Biener * tree-vect-generic.c (tree_vec_extract): Remove odd special-casing of boolean vectors. * fold-const.c (fold_ternary_loc): Handle boolean vector type BIT_FIELD_REFs. --- gcc/fold-const.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc/fold-const.c') diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 1f86163..0cc80ad 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -12581,7 +12581,9 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type, && tree_fits_uhwi_p (op2)) { tree eltype = TREE_TYPE (TREE_TYPE (arg0)); - unsigned HOST_WIDE_INT width = tree_to_uhwi (TYPE_SIZE (eltype)); + unsigned HOST_WIDE_INT width + = (TREE_CODE (eltype) == BOOLEAN_TYPE + ? TYPE_PRECISION (eltype) : tree_to_uhwi (TYPE_SIZE (eltype))); unsigned HOST_WIDE_INT n = tree_to_uhwi (arg1); unsigned HOST_WIDE_INT idx = tree_to_uhwi (op2); -- cgit v1.1