re PR c++/42083 ([C++0x] ICE on invalid with "tree check: expected aggr_init_expr, have error_mark in build_value_init")
/cp 2010-12-15 Paolo Carlini <paolo.carlini@oracle.com> PR c++/42083 * init.c (build_value_init): Check build_special_member_call return value for error_mark_node. /testsuite 2010-12-15 Paolo Carlini <paolo.carlini@oracle.com> PR c++/42083 * g++.dg/cpp0x/lambda/lambda-ice2.C: New. From-SVN: r167862
This commit is contained in:
parent
da17cbb79b
commit
272dc85143
4 changed files with 32 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-12-15 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/42083
|
||||
* init.c (build_value_init): Check build_special_member_call return
|
||||
value for error_mark_node.
|
||||
|
||||
2010-12-14 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/46930
|
||||
|
|
|
@ -314,9 +314,11 @@ build_value_init (tree type, tsubst_flags_t complain)
|
|||
tree ctor = build_special_member_call
|
||||
(NULL_TREE, complete_ctor_identifier,
|
||||
NULL, type, LOOKUP_NORMAL, complain);
|
||||
|
||||
ctor = build_aggr_init_expr (type, ctor);
|
||||
AGGR_INIT_ZERO_FIRST (ctor) = 1;
|
||||
if (ctor != error_mark_node)
|
||||
{
|
||||
ctor = build_aggr_init_expr (type, ctor);
|
||||
AGGR_INIT_ZERO_FIRST (ctor) = 1;
|
||||
}
|
||||
return ctor;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2010-12-15 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/42083
|
||||
* g++.dg/cpp0x/lambda/lambda-ice2.C: New.
|
||||
|
||||
2010-12-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gfortran.dg/debug/pr46756.f: Correct PR number.
|
||||
|
|
16
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C
Normal file
16
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C
Normal file
|
@ -0,0 +1,16 @@
|
|||
// PR c++/42083
|
||||
// { dg-options "-std=c++0x" }
|
||||
|
||||
template<typename F>
|
||||
decltype(F()) run(F f) // { dg-message "note" }
|
||||
{
|
||||
return f();
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
auto l = []() { return 5; };
|
||||
|
||||
run(l); // { dg-error "no match" }
|
||||
// { dg-message "candidate" "candidate note" { target *-*-* } 14 }
|
||||
}
|
Loading…
Add table
Reference in a new issue