[multiple changes]
authorAndrew Pinski <apinski@apple.com>
Wed, 23 Jun 2004 17:05:45 +0000 (17:05 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Wed, 23 Jun 2004 17:05:45 +0000 (10:05 -0700)
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.

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

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

From-SVN: r83557

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

index b907be90ed2d301ab61974645ec2ae48515c51d6..e2ca75138bc118fb0c92d9a15df8e725e24f274a 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 a2daf3277e97af139c5df6414457c09660a6e2f7..6a4e1dbe42f81a6009ad9c1a8a98620ae4bbfca7 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 b57899d4c68fe3ce09a4c8733b4699cbedae03b0..2afaf6e07a2418af34231609d0cc532a1ef7933b 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)[];