2004-06-23 Andrew Pinski <apinski@apple.com>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Jun 2004 17:05:45 +0000 (17:05 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Jun 2004 17:05:45 +0000 (17:05 +0000)
        * c-typeck.c (composite_type):
        <case POINTER_TYPE>: Build a qualified type of
        the new type.
        <case ARRAY_TYPE>: Likewise.
        <case FUNCTION_TYPE>: Likewise.

2006-06-23  Andrew Pinski  <apinski@apple.com>

        * gcc.dg/c90-array-quals.c: New test.

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

gcc/ChangeLog
gcc/c-typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/c90-array-quals.c [new file with mode: 0644]

index b907be9..e2ca751 100644 (file)
@@ -1,3 +1,11 @@
+2004-06-23  Andrew Pinski  <apinski@apple.com>
+
+       * c-typeck.c (composite_type):
+       <case POINTER_TYPE>: Build a qualified type of
+       the new type.
+       <case ARRAY_TYPE>: Likewise.
+       <case FUNCTION_TYPE>: Likewise.
+
 2004-06-23  Pat Haugen  <pthaugen@us.ibm.com>
 
        PR optimization/15633
index a2daf32..6a4e1db 100644 (file)
@@ -253,7 +253,8 @@ composite_type (tree t1, tree t2)
        tree pointed_to_2 = TREE_TYPE (t2);
        tree target = composite_type (pointed_to_1, pointed_to_2);
        t1 = build_pointer_type (target);
-       return build_type_attribute_variant (t1, attributes);
+       t1 = build_type_attribute_variant (t1, attributes);
+       return qualify_type (t1, t2);
       }
 
     case ARRAY_TYPE:
@@ -266,7 +267,8 @@ composite_type (tree t1, tree t2)
          return build_type_attribute_variant (t2, attributes);
        /* Merge the element types, and have a size if either arg has one.  */
        t1 = build_array_type (elt, TYPE_DOMAIN (TYPE_DOMAIN (t1) ? t1 : t2));
-       return build_type_attribute_variant (t1, attributes);
+       t1 = build_type_attribute_variant (t1, attributes);
+       return qualify_type (t1, t2);
       }
 
     case FUNCTION_TYPE:
@@ -289,13 +291,15 @@ composite_type (tree t1, tree t2)
        /* Simple way if one arg fails to specify argument types.  */
        if (TYPE_ARG_TYPES (t1) == 0)
         {
-          t1 = build_function_type (valtype, TYPE_ARG_TYPES (t2));
-          return build_type_attribute_variant (t1, attributes);
+           t1 = build_function_type (valtype, TYPE_ARG_TYPES (t2));
+           t1 = build_type_attribute_variant (t1, attributes);
+           return qualify_type (t1, t2);
         }
        if (TYPE_ARG_TYPES (t2) == 0)
         {
           t1 = build_function_type (valtype, TYPE_ARG_TYPES (t1));
-          return build_type_attribute_variant (t1, attributes);
+          t1 = build_type_attribute_variant (t1, attributes);
+          return qualify_type (t1, t2);
         }
 
        /* If both args specify argument types, we must merge the two
@@ -365,6 +369,7 @@ composite_type (tree t1, tree t2)
 
        c_override_global_bindings_to_false = false;
        t1 = build_function_type (valtype, newargs);
+       t1 = qualify_type (t1, t2);
        /* ... falls through ...  */
       }
 
index b57899d..2afaf6e 100644 (file)
@@ -1,3 +1,7 @@
+2006-06-23  Andrew Pinski  <apinski@apple.com>
+
+       * gcc.dg/c90-array-quals.c: New test.
+
 2006-06-22  Richard Henderson  <rth@redhat.com>
 
        * gcc.dg/noreturn-1.c (foo5): Update function does return lineno.
diff --git a/gcc/testsuite/gcc.dg/c90-array-quals.c b/gcc/testsuite/gcc.dg/c90-array-quals.c
new file mode 100644 (file)
index 0000000..228e79f
--- /dev/null
@@ -0,0 +1,3 @@
+extern int (*const a)[];
+extern int (*const a)[10];
+extern int (*const a)[];