Add tree_fits_uhwi_p tests to BIT_FIELD_REF folder
The first BIT_FIELD_REF folding pattern assumed without checking that operands satisfy tree_fits_uhwi_p. The second pattern does check this: /* On constants we can use native encode/interpret to constant fold (nearly) all BIT_FIELD_REFs. */ if (CONSTANT_CLASS_P (arg0) && can_native_interpret_type_p (type) && BITS_PER_UNIT == 8 && tree_fits_uhwi_p (op1) && tree_fits_uhwi_p (op2)) so this patch adds the checks to the first pattern too. This is needed for POLY_INT_CST bit positions. 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before using tree_to_uhwi. From-SVN: r256258
This commit is contained in:
parent
88654ce63d
commit
1de1073520
@ -1,3 +1,8 @@
|
||||
2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
|
||||
* fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
|
||||
using tree_to_uhwi.
|
||||
|
||||
2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
|
||||
* tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
|
||||
|
@ -11643,7 +11643,9 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type,
|
||||
if (TREE_CODE (arg0) == VECTOR_CST
|
||||
&& (type == TREE_TYPE (TREE_TYPE (arg0))
|
||||
|| (TREE_CODE (type) == VECTOR_TYPE
|
||||
&& TREE_TYPE (type) == TREE_TYPE (TREE_TYPE (arg0)))))
|
||||
&& TREE_TYPE (type) == TREE_TYPE (TREE_TYPE (arg0))))
|
||||
&& tree_fits_uhwi_p (op1)
|
||||
&& tree_fits_uhwi_p (op2))
|
||||
{
|
||||
tree eltype = TREE_TYPE (TREE_TYPE (arg0));
|
||||
unsigned HOST_WIDE_INT width = tree_to_uhwi (TYPE_SIZE (eltype));
|
||||
|
Loading…
Reference in New Issue
Block a user