diff options
author | Jason Merrill <jason@redhat.com> | 2014-01-27 23:30:16 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-01-27 23:30:16 -0500 |
commit | 64d34897909d2aafbe461490bd82951727fda20a (patch) | |
tree | b20d6d556ac8c3a6d5bd2e352c00318984213286 | |
parent | 5a21ca245076f264074968957fa05a473202a4d8 (diff) | |
download | gcc-64d34897909d2aafbe461490bd82951727fda20a.zip gcc-64d34897909d2aafbe461490bd82951727fda20a.tar.gz gcc-64d34897909d2aafbe461490bd82951727fda20a.tar.bz2 |
re PR c++/59097 (ICE with invalid statement expression as array size)
PR c++/59097
* decl.c (compute_array_index_type): Don't call
maybe_constant_value for a non-integral expression.
From-SVN: r207161
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/stmtexpr15.C | 7 |
3 files changed, 16 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 635fb05..3c58b6b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-01-27 Jason Merrill <jason@redhat.com> + + PR c++/59097 + * decl.c (compute_array_index_type): Don't call + maybe_constant_value for a non-integral expression. + 2014-01-24 Balaji V. Iyer <balaji.v.iyer@intel.com> * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 38f2de0..7ebb05d 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -8262,7 +8262,9 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain) abi_1_itype = error_mark_node; } - size = maybe_constant_value (size); + if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type)) + size = maybe_constant_value (size); + if (!TREE_CONSTANT (size)) size = osize; } diff --git a/gcc/testsuite/g++.dg/ext/stmtexpr15.C b/gcc/testsuite/g++.dg/ext/stmtexpr15.C new file mode 100644 index 0000000..83a831c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/stmtexpr15.C @@ -0,0 +1,7 @@ +// PR c++/59097 +// { dg-options "" } + +void foo() +{ + int x[({ return; })]; // { dg-error "non-integral" } +} |