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
This commit is contained in:
Paolo Carlini 2011-07-26 20:00:31 +00:00 committed by Paolo Carlini
parent bce26def59
commit 625f85e91b
4 changed files with 30 additions and 0 deletions

View File

@ -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

View File

@ -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),

View File

@ -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

View File

@ -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;
}