Commit 822cc906 by Patrick Palka Committed by Jason Merrill

re PR c++/21113 (Jumps into VLA or VM scope not rejected for C++)

	PR c++/21113
	* decl.c (decl_jump_unsafe): Consider variably-modified decls.

From-SVN: r209124
parent 8fe91ca8
2014-04-04 Patrick Palka <patrick@parcs.ath.cx>
PR c++/21113
* decl.c (decl_jump_unsafe): Consider variably-modified decls.
2014-04-04 Fabien Chêne <fabien@gcc.gnu.org> 2014-04-04 Fabien Chêne <fabien@gcc.gnu.org>
* class.c (find_abi_tags_r): Check for the return of warning * class.c (find_abi_tags_r): Check for the return of warning
......
...@@ -2785,12 +2785,11 @@ decl_jump_unsafe (tree decl) ...@@ -2785,12 +2785,11 @@ decl_jump_unsafe (tree decl)
|| type == error_mark_node) || type == error_mark_node)
return 0; return 0;
type = strip_array_types (type); if (DECL_NONTRIVIALLY_INITIALIZED_P (decl)
|| variably_modified_type_p (type, NULL_TREE))
if (DECL_NONTRIVIALLY_INITIALIZED_P (decl))
return 2; return 2;
if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))) if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type))
return 1; return 1;
return 0; return 0;
......
// PR c++/21113
// { dg-options "" }
void
f (int n)
{
goto label; // { dg-error "from here" }
int a[n]; // { dg-error "crosses initialization" }
label: // { dg-error "jump to label" }
;
}
void
g (int n)
{
switch (1)
{
case 1:
int (*a)[n]; // { dg-error "crosses initialization" }
default: // { dg-error "jump to case label" }
;
}
}
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