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 /gcc/cp/decl.c | |
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
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r-- | gcc/cp/decl.c | 19 |
1 files changed, 11 insertions, 8 deletions
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) |