aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2014-02-21 09:56:46 -0500
committerJason Merrill <jason@gcc.gnu.org>2014-02-21 09:56:46 -0500
commitcd3ef6f762a6dc3d7871f33b297be5b684b68ad0 (patch)
tree237d5ccddfbe56cd547e12622239b9c1fd5fecf4 /gcc
parent1ea32974525999aa5b4a4550a74bef7849d9e9e1 (diff)
downloadgcc-cd3ef6f762a6dc3d7871f33b297be5b684b68ad0.zip
gcc-cd3ef6f762a6dc3d7871f33b297be5b684b68ad0.tar.gz
gcc-cd3ef6f762a6dc3d7871f33b297be5b684b68ad0.tar.bz2
re PR c++/60277 (Bogus "inline function virtual ..." used but never defined)
PR c++/60277 * call.c (build_array_conv): Don't crash on VLA. From-SVN: r208001
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/call.c3
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/vla13.C8
3 files changed, 13 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0dff516..61f5859 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
2014-02-21 Jason Merrill <jason@redhat.com>
+ PR c++/60277
+ * call.c (build_array_conv): Don't crash on VLA.
+
PR c++/60248
* mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index d4e8a28..d3db585 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -948,7 +948,8 @@ build_array_conv (tree type, tree ctor, int flags, tsubst_flags_t complain)
bool user = false;
enum conversion_rank rank = cr_exact;
- if (TYPE_DOMAIN (type))
+ if (TYPE_DOMAIN (type)
+ && !variably_modified_type_p (TYPE_DOMAIN (type), NULL_TREE))
{
unsigned HOST_WIDE_INT alen = tree_to_uhwi (array_type_nelts_top (type));
if (alen < len)
diff --git a/gcc/testsuite/g++.dg/cpp1y/vla13.C b/gcc/testsuite/g++.dg/cpp1y/vla13.C
new file mode 100644
index 0000000..71b5452
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/vla13.C
@@ -0,0 +1,8 @@
+// PR c++/60277
+// { dg-options "-std=c++1y -pedantic-errors" }
+
+void foo(int n)
+{
+ int a[n];
+ int (&r)[n] = {}; // { dg-error "" }
+}