diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2011-07-26 20:00:31 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2011-07-26 20:00:31 +0000 |
commit | 625f85e91b9b91fc3d82416abf7e00f556e6e6da (patch) | |
tree | d2539c1e410dbe997a238756e90b6e2917cd7805 | |
parent | bce26def5998cbc546e99cdc3c874d921b04aa5e (diff) | |
download | gcc-625f85e91b9b91fc3d82416abf7e00f556e6e6da.zip gcc-625f85e91b9b91fc3d82416abf7e00f556e6e6da.tar.gz gcc-625f85e91b9b91fc3d82416abf7e00f556e6e6da.tar.bz2 |
re PR c++/49776 ([C++0x]ICE in build_data_member_initialization, at cp/semantics.c:5499)
/cp
2011-07-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/49776
* typeck.c (cp_build_modify_expr): Check digest_init return value
for error_mark_node.
/testsuite
2011-07-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/49776
* g++.dg/cpp0x/constexpr-49776.C: New.
From-SVN: r176809
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/constexpr-49776.C | 17 |
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index fe6b7da..d169ed1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-07-26 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/49776 + * typeck.c (cp_build_modify_expr): Check digest_init return value + for error_mark_node. + 2011-07-25 Paolo Carlini <paolo.carlini@oracle.com> PR bootstrap/49845 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 52084e6..ab08eae 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -6753,6 +6753,8 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs, if (check_array_initializer (lhs, lhstype, newrhs)) return error_mark_node; newrhs = digest_init (lhstype, newrhs, complain); + if (newrhs == error_mark_node) + return error_mark_node; } else if (!same_or_base_type_p (TYPE_MAIN_VARIANT (lhstype), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b201960..f0cb44b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-07-26 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/49776 + * g++.dg/cpp0x/constexpr-49776.C: New. + 2011-07-26 Sebastian Pop <sebastian.pop@amd.com> PR middle-end/47046 diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-49776.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-49776.C new file mode 100644 index 0000000..3fe3dcb --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-49776.C @@ -0,0 +1,17 @@ +// PR c++/49776 +// { dg-options -std=c++0x } + +struct s +{ + int i[1]; + + template<class... Types> + constexpr s(Types... args) + : i{args...} // { dg-error "cannot convert" } + { } +}; + +int main() +{ + s test = nullptr; +} |