diff options
author | Jason Merrill <jason@redhat.com> | 2017-07-11 14:41:32 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2017-07-11 14:41:32 -0400 |
commit | 19cf5a70685214d2fe4c5b79b1f8399de8a7091e (patch) | |
tree | c8c7e4e1fd4ab01c167ad3f8109b425439e63fef | |
parent | f281956edeed9c6be03867bf3875881970bc115c (diff) | |
download | gcc-19cf5a70685214d2fe4c5b79b1f8399de8a7091e.zip gcc-19cf5a70685214d2fe4c5b79b1f8399de8a7091e.tar.gz gcc-19cf5a70685214d2fe4c5b79b1f8399de8a7091e.tar.bz2 |
Core DR 393 - parameter pointer to array of unknown bound
* decl.c (grokparms): Downgrade error about array of unknown bound
to pedwarn and disable it for C++17.
From-SVN: r250137
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl.c | 19 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/dr393.C | 4 |
3 files changed, 21 insertions, 8 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 17caf5d..bf77412 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2017-07-11 Jason Merrill <jason@redhat.com> + + Core DR 393 + * decl.c (grokparms): Downgrade error about array of unknown bound + to pedwarn and disable it for C++17. + 2017-07-11 Nathan Sidwell <nathan@acm.org> * decl2.c (reset_type_linkage_2): Dont't change ctor name. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 43a94d9..b9b8794 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -12591,9 +12591,11 @@ grokparms (tree parmlist, tree *parms) } else if (abstract_virtuals_error (decl, type)) any_error = 1; /* Seems like a good idea. */ - else if (POINTER_TYPE_P (type)) + else if (cxx_dialect < cxx1z + && POINTER_TYPE_P (type)) { - /* [dcl.fct]/6, parameter types cannot contain pointers + /* Before C++17 DR 393: + [dcl.fct]/6, parameter types cannot contain pointers (references) to arrays of unknown bound. */ tree t = TREE_TYPE (type); int ptr = TYPE_PTR_P (type); @@ -12609,12 +12611,13 @@ grokparms (tree parmlist, tree *parms) t = TREE_TYPE (t); } if (TREE_CODE (t) == ARRAY_TYPE) - error (ptr - ? G_("parameter %qD includes pointer to array of " - "unknown bound %qT") - : G_("parameter %qD includes reference to array of " - "unknown bound %qT"), - decl, t); + pedwarn (DECL_SOURCE_LOCATION (decl), OPT_Wpedantic, + ptr + ? G_("parameter %qD includes pointer to array of " + "unknown bound %qT") + : G_("parameter %qD includes reference to array of " + "unknown bound %qT"), + decl, t); } if (any_error) diff --git a/gcc/testsuite/g++.dg/cpp1z/dr393.C b/gcc/testsuite/g++.dg/cpp1z/dr393.C new file mode 100644 index 0000000..4a7645a --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/dr393.C @@ -0,0 +1,4 @@ +// DR 393 +// { dg-options -Wpedantic } + +void f(int (&)[]); // { dg-warning "unknown bound" "" { target c++14_down } } |