Commit ed75f594 by Jason Merrill Committed by Jason Merrill

PR c++/84560 - ICE capturing multi-dimensional VLA.

	* tree.c (array_of_runtime_bound_p): False if the element is
	variably-modified.

From-SVN: r258023
parent a2444ce9
2018-02-26 Jason Merrill <jason@redhat.com> 2018-02-26 Jason Merrill <jason@redhat.com>
PR c++/84560 - ICE capturing multi-dimensional VLA.
* tree.c (array_of_runtime_bound_p): False if the element is
variably-modified.
PR c++/84441 - ICE with base initialized from ?: PR c++/84441 - ICE with base initialized from ?:
* call.c (unsafe_copy_elision_p): Handle COND_EXPR. * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
......
...@@ -1043,6 +1043,8 @@ array_of_runtime_bound_p (tree t) ...@@ -1043,6 +1043,8 @@ array_of_runtime_bound_p (tree t)
{ {
if (!t || TREE_CODE (t) != ARRAY_TYPE) if (!t || TREE_CODE (t) != ARRAY_TYPE)
return false; return false;
if (variably_modified_type_p (TREE_TYPE (t), NULL_TREE))
return false;
tree dom = TYPE_DOMAIN (t); tree dom = TYPE_DOMAIN (t);
if (!dom) if (!dom)
return false; return false;
......
// PR c++/84560
// { dg-do compile { target c++11 } }
// { dg-options "" }
void f() {
int n = 1;
int m = 1;
int d[n][m];
[&]() {
return d[1]; // { dg-error "variabl" }
}();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment