From 5df0c0c767de7cc44474504d0de8e15ac96c97b9 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 25 May 2011 22:22:54 -0400 Subject: [PATCH] re PR c++/48599 ([C++0x] no diagnostic for invalid use of auto with array declarator) PR c++/48599 * decl.c (create_array_type_for_decl): Complain about array of auto. From-SVN: r174257 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/decl.c | 6 ++++++ gcc/testsuite/ChangeLog | 2 ++ gcc/testsuite/g++.dg/cpp0x/auto24.C | 5 +++++ 4 files changed, 16 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/auto24.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 06d51594bb8..dad97add6c4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2011-05-25 Jason Merrill + 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 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index d53fa26c68a..58cab51ab81 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -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 %", name); + /* If there are some types which cannot be array elements, issue an error-message and return. */ switch (TREE_CODE (type)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 07f4845ee01..bcef9a9df22 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2011-05-25 Jason Merrill + * 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 index 00000000000..b024ad5b2ab --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/auto24.C @@ -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" } -- 2.30.2