Commit 51c869ca by Richard Guenther Committed by Richard Biener

tree.def (COMPLEX_TYPE): Constrain element type.

2008-10-22  Richard Guenther  <rguenther@suse.de>

	* tree.def (COMPLEX_TYPE): Constrain element type.
	* tree.c (build_complex_type): Assert that.
	* tree-ssa-structalias.c (could_have_pointers): Complex types
	cannot have pointers.

From-SVN: r141299
parent a7da8b42
2008-10-22 Richard Guenther <rguenther@suse.de>
* tree.def (COMPLEX_TYPE): Constrain element type.
* tree.c (build_complex_type): Assert that.
* tree-ssa-structalias.c (could_have_pointers): Complex types
cannot have pointers.
2008-10-22 Manuel López-Ibáñez <manu@gcc.gnu.org> 2008-10-22 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/30949 PR c/30949
......
...@@ -2765,8 +2765,7 @@ could_have_pointers (tree t) ...@@ -2765,8 +2765,7 @@ could_have_pointers (tree t)
tree type = TREE_TYPE (t); tree type = TREE_TYPE (t);
if (POINTER_TYPE_P (type) if (POINTER_TYPE_P (type)
|| AGGREGATE_TYPE_P (type) || AGGREGATE_TYPE_P (type))
|| TREE_CODE (type) == COMPLEX_TYPE)
return true; return true;
return false; return false;
......
...@@ -6168,6 +6168,10 @@ build_complex_type (tree component_type) ...@@ -6168,6 +6168,10 @@ build_complex_type (tree component_type)
tree t; tree t;
hashval_t hashcode; hashval_t hashcode;
gcc_assert (INTEGRAL_TYPE_P (component_type)
|| SCALAR_FLOAT_TYPE_P (component_type)
|| FIXED_POINT_TYPE_P (component_type));
/* Make a node of the sort we want. */ /* Make a node of the sort we want. */
t = make_node (COMPLEX_TYPE); t = make_node (COMPLEX_TYPE);
......
...@@ -186,7 +186,8 @@ DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0) ...@@ -186,7 +186,8 @@ DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0)
compiler. COMPLEX_TYPE, VECTOR_TYPE, ARRAY_TYPE. */ compiler. COMPLEX_TYPE, VECTOR_TYPE, ARRAY_TYPE. */
/* Complex number types. The TREE_TYPE field is the data type /* Complex number types. The TREE_TYPE field is the data type
of the real and imaginary parts. */ of the real and imaginary parts. It must be of scalar
arithmetic type, not including pointer type. */
DEFTREECODE (COMPLEX_TYPE, "complex_type", tcc_type, 0) DEFTREECODE (COMPLEX_TYPE, "complex_type", tcc_type, 0)
/* Vector types. The TREE_TYPE field is the data type of the vector /* Vector types. The TREE_TYPE field is the data type of the vector
......
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