diff options
author | Jason Merrill <jason@redhat.com> | 2014-05-28 12:30:46 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-05-28 12:30:46 -0400 |
commit | a41acf5f3e06afa2790ff826b16ccccf1959842c (patch) | |
tree | 86872878ecd5d0830878a5d3da5503cbda716d0d | |
parent | a33ad58be16a5288cb2874aded7b83b163a829b4 (diff) | |
download | gcc-a41acf5f3e06afa2790ff826b16ccccf1959842c.zip gcc-a41acf5f3e06afa2790ff826b16ccccf1959842c.tar.gz gcc-a41acf5f3e06afa2790ff826b16ccccf1959842c.tar.bz2 |
pt.c (tsubst): Check for array of array of unknown bound.
* pt.c (tsubst) [ARRAY_TYPE]: Check for array of array of unknown
bound.
From-SVN: r211025
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/pt.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/array28.C | 7 |
3 files changed, 13 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2b7f32f..a7d8861 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2014-05-28 Jason Merrill <jason@redhat.com> + * pt.c (tsubst) [ARRAY_TYPE]: Check for array of array of unknown + bound. + PR c++/61242 * call.c (build_aggr_conv): Ignore passed in flags. (build_array_conv, build_complex_conv): Likewise. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 2ebe015..0b3cd7f 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -12084,7 +12084,7 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl) if (type == TREE_TYPE (t) && domain == TYPE_DOMAIN (t)) return t; - /* These checks should match the ones in grokdeclarator. + /* These checks should match the ones in create_array_type_for_decl. [temp.deduct] @@ -12095,6 +12095,8 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl) an abstract class type. */ if (VOID_TYPE_P (type) || TREE_CODE (type) == FUNCTION_TYPE + || (TREE_CODE (type) == ARRAY_TYPE + && TYPE_DOMAIN (type) == NULL_TREE) || TREE_CODE (type) == REFERENCE_TYPE) { if (complain & tf_error) diff --git a/gcc/testsuite/g++.dg/template/array28.C b/gcc/testsuite/g++.dg/template/array28.C new file mode 100644 index 0000000..18b629d --- /dev/null +++ b/gcc/testsuite/g++.dg/template/array28.C @@ -0,0 +1,7 @@ +typedef int (A)[]; + +template<class T> void f(T (*)[1]); // { dg-error "array" } + +int main() { + f<int[]>(0); // { dg-error "no match" } +} |