OSDN Git Service

2008-10-22 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Oct 2008 17:40:29 +0000 (17:40 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Oct 2008 17:40:29 +0000 (17:40 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@141299 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-ssa-structalias.c
gcc/tree.c
gcc/tree.def

index 7e72bca..484e340 100644 (file)
@@ -1,3 +1,10 @@
+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>
 
        PR c/30949
index 6db8298..11427ec 100644 (file)
@@ -2765,8 +2765,7 @@ could_have_pointers (tree t)
   tree type = TREE_TYPE (t);
 
   if (POINTER_TYPE_P (type)
-      || AGGREGATE_TYPE_P (type)
-      || TREE_CODE (type) == COMPLEX_TYPE)
+      || AGGREGATE_TYPE_P (type))
     return true;
 
   return false;
index 925eafe..10b50d1 100644 (file)
@@ -6168,6 +6168,10 @@ build_complex_type (tree component_type)
   tree t;
   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.  */
   t = make_node (COMPLEX_TYPE);
 
index bde59b7..3e077cc 100644 (file)
@@ -186,7 +186,8 @@ DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0)
    compiler.  COMPLEX_TYPE, VECTOR_TYPE, ARRAY_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)
 
 /* Vector types.  The TREE_TYPE field is the data type of the vector