OSDN Git Service

PR c++/48599
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 May 2011 02:22:54 +0000 (02:22 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 May 2011 02:22:54 +0000 (02:22 +0000)
* decl.c (create_array_type_for_decl): Complain about array of auto.

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

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/auto24.C [new file with mode: 0644]

index 06d5159..dad97ad 100644 (file)
@@ -1,5 +1,8 @@
 2011-05-25  Jason Merrill  <jason@redhat.com>
 
+       PR c++/48599
+       * decl.c (create_array_type_for_decl): Complain about array of auto.
+
        PR c++/44944
        PR c++/49156
        * error.c (dump_template_bindings): Set processing_template_decl
index d53fa26..58cab51 100644 (file)
@@ -7974,6 +7974,12 @@ create_array_type_for_decl (tree name, tree type, tree size)
   if (type == error_mark_node || size == error_mark_node)
     return error_mark_node;
 
+  /* 8.3.4/1: If the type of the identifier of D contains the auto
+     type-specifier, the program is ill-formed.  */
+  if (pedantic && type_uses_auto (type))
+    pedwarn (input_location, OPT_pedantic,
+            "declaration of %qD as array of %<auto%>", name);
+
   /* If there are some types which cannot be array elements,
      issue an error-message and return.  */
   switch (TREE_CODE (type))
index 07f4845..bcef9a9 100644 (file)
@@ -1,5 +1,7 @@
 2011-05-25  Jason Merrill  <jason@redhat.com>
 
+       * g++.dg/cpp0x/auto24.C: New.
+
        * g++.dg/cpp0x/error4.C: New.
 
        * g++.dg/cpp0x/rv-restrict.C: New.
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto24.C b/gcc/testsuite/g++.dg/cpp0x/auto24.C
new file mode 100644 (file)
index 0000000..b024ad5
--- /dev/null
@@ -0,0 +1,5 @@
+// PR c++/48599
+// { dg-options "-std=c++0x -pedantic-errors" }
+
+int v[1];
+auto (*p)[1] = &v;             // { dg-error "array of .auto" }