fold-const.c (fold_convertible_p): Don't return true for conversion of VECTOR_TYPE to same sized integral type.
* fold-const.c (fold_convertible_p): Don't return true for conversion of VECTOR_TYPE to same sized integral type. (fold_convert_loc): Fix up formatting. Fold conversion of VECTOR_TYPE to same sized integral type using VIEW_CONVERT_EXPR instead of NOP_EXPR. From-SVN: r232236
This commit is contained in:
parent
1ebd5558eb
commit
5a32af0ec5
@ -1,5 +1,11 @@
|
|||||||
2016-01-11 Jakub Jelinek <jakub@redhat.com>
|
2016-01-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* fold-const.c (fold_convertible_p): Don't return true
|
||||||
|
for conversion of VECTOR_TYPE to same sized integral type.
|
||||||
|
(fold_convert_loc): Fix up formatting. Fold conversion of
|
||||||
|
VECTOR_TYPE to same sized integral type using VIEW_CONVERT_EXPR
|
||||||
|
instead of NOP_EXPR.
|
||||||
|
|
||||||
PR tree-optimization/69214
|
PR tree-optimization/69214
|
||||||
* tree-vrp.c (simplify_cond_using_ranges): Don't propagate
|
* tree-vrp.c (simplify_cond_using_ranges): Don't propagate
|
||||||
innerop into a comparison if SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
|
innerop into a comparison if SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
|
||||||
|
@ -2182,11 +2182,8 @@ fold_convertible_p (const_tree type, const_tree arg)
|
|||||||
case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE:
|
case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE:
|
||||||
case POINTER_TYPE: case REFERENCE_TYPE:
|
case POINTER_TYPE: case REFERENCE_TYPE:
|
||||||
case OFFSET_TYPE:
|
case OFFSET_TYPE:
|
||||||
if (INTEGRAL_TYPE_P (orig) || POINTER_TYPE_P (orig)
|
return (INTEGRAL_TYPE_P (orig) || POINTER_TYPE_P (orig)
|
||||||
|| TREE_CODE (orig) == OFFSET_TYPE)
|
|| TREE_CODE (orig) == OFFSET_TYPE);
|
||||||
return true;
|
|
||||||
return (TREE_CODE (orig) == VECTOR_TYPE
|
|
||||||
&& tree_int_cst_equal (TYPE_SIZE (type), TYPE_SIZE (orig)));
|
|
||||||
|
|
||||||
case REAL_TYPE:
|
case REAL_TYPE:
|
||||||
case FIXED_POINT_TYPE:
|
case FIXED_POINT_TYPE:
|
||||||
@ -2245,7 +2242,7 @@ fold_convert_loc (location_t loc, tree type, tree arg)
|
|||||||
TREE_TYPE (orig), arg));
|
TREE_TYPE (orig), arg));
|
||||||
gcc_assert (TREE_CODE (orig) == VECTOR_TYPE
|
gcc_assert (TREE_CODE (orig) == VECTOR_TYPE
|
||||||
&& tree_int_cst_equal (TYPE_SIZE (type), TYPE_SIZE (orig)));
|
&& tree_int_cst_equal (TYPE_SIZE (type), TYPE_SIZE (orig)));
|
||||||
return fold_build1_loc (loc, NOP_EXPR, type, arg);
|
return fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, arg);
|
||||||
|
|
||||||
case REAL_TYPE:
|
case REAL_TYPE:
|
||||||
if (TREE_CODE (arg) == INTEGER_CST)
|
if (TREE_CODE (arg) == INTEGER_CST)
|
||||||
|
Loading…
Reference in New Issue
Block a user