Commit 9514e74f by Jason Merrill Committed by Jason Merrill

fold-const.c (fold_convert_const): Fold changing cv-quals on VECTOR_CST.

	* fold-const.c (fold_convert_const): Fold changing cv-quals on
	VECTOR_CST.

From-SVN: r230358
parent e45639f3
2015-11-13 Jason Merrill <jason@redhat.com> 2015-11-13 Jason Merrill <jason@redhat.com>
* fold-const.c (fold_convert_const): Fold changing cv-quals on
VECTOR_CST.
* hash-map.h (hash_map::empty): New. * hash-map.h (hash_map::empty): New.
2015-11-13 Nathan Sidwell <nathan@codesourcery.com> 2015-11-13 Nathan Sidwell <nathan@codesourcery.com>
...@@ -2095,6 +2095,25 @@ fold_convert_const (enum tree_code code, tree type, tree arg1) ...@@ -2095,6 +2095,25 @@ fold_convert_const (enum tree_code code, tree type, tree arg1)
else if (TREE_CODE (arg1) == REAL_CST) else if (TREE_CODE (arg1) == REAL_CST)
return fold_convert_const_fixed_from_real (type, arg1); return fold_convert_const_fixed_from_real (type, arg1);
} }
else if (TREE_CODE (type) == VECTOR_TYPE)
{
if (TREE_CODE (arg1) == VECTOR_CST
&& TYPE_VECTOR_SUBPARTS (type) == VECTOR_CST_NELTS (arg1))
{
int len = TYPE_VECTOR_SUBPARTS (type);
tree elttype = TREE_TYPE (type);
tree *v = XALLOCAVEC (tree, len);
for (int i = 0; i < len; ++i)
{
tree elt = VECTOR_CST_ELT (arg1, i);
tree cvt = fold_convert_const (code, elttype, elt);
if (cvt == NULL_TREE)
return NULL_TREE;
v[i] = cvt;
}
return build_vector (type, v);
}
}
return NULL_TREE; return NULL_TREE;
} }
......
...@@ -303,7 +303,7 @@ DEFTREECODE (FIXED_CST, "fixed_cst", tcc_constant, 0) ...@@ -303,7 +303,7 @@ DEFTREECODE (FIXED_CST, "fixed_cst", tcc_constant, 0)
whose contents are other constant nodes. */ whose contents are other constant nodes. */
DEFTREECODE (COMPLEX_CST, "complex_cst", tcc_constant, 0) DEFTREECODE (COMPLEX_CST, "complex_cst", tcc_constant, 0)
/* Contents are in TREE_VECTOR_CST_ELTS field. */ /* Contents are in VECTOR_CST_ELTS field. */
DEFTREECODE (VECTOR_CST, "vector_cst", tcc_constant, 0) DEFTREECODE (VECTOR_CST, "vector_cst", tcc_constant, 0)
/* Contents are TREE_STRING_LENGTH and the actual contents of the string. */ /* Contents are TREE_STRING_LENGTH and the actual contents of the string. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment