re PR c++/47242 ([C++0x] ICE: tree check: expected field_decl, have error_mark in build_lambda_object, at cp/semantics.c:7604 on invalid lambda function)
/cp 2011-02-22 Paolo Carlini <paolo.carlini@oracle.com> PR c++/47242 * semantics.c (build_lambda_object): Bail out if a field is error_mark_node. /testsuite 2011-02-22 Paolo Carlini <paolo.carlini@oracle.com> PR c++/47242 * g++.dg/cpp0x/lambda/lambda-ice4.C: New. From-SVN: r170423
This commit is contained in:
parent
b152a6158e
commit
a26e0b8113
|
@ -1,3 +1,9 @@
|
|||
2011-02-22 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/47242
|
||||
* semantics.c (build_lambda_object): Bail out if a field is
|
||||
error_mark_node.
|
||||
|
||||
2011-02-22 Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
PR c++/47666
|
||||
|
|
|
@ -7795,6 +7795,12 @@ build_lambda_object (tree lambda_expr)
|
|||
tree field = TREE_PURPOSE (node);
|
||||
tree val = TREE_VALUE (node);
|
||||
|
||||
if (field == error_mark_node)
|
||||
{
|
||||
expr = error_mark_node;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (DECL_P (val))
|
||||
mark_used (val);
|
||||
|
||||
|
@ -7830,6 +7836,7 @@ build_lambda_object (tree lambda_expr)
|
|||
expr = finish_compound_literal (type, expr);
|
||||
CLASSTYPE_NON_AGGREGATE (type) = 1;
|
||||
|
||||
out:
|
||||
input_location = saved_loc;
|
||||
return expr;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2011-02-22 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/47242
|
||||
* g++.dg/cpp0x/lambda/lambda-ice4.C: New.
|
||||
|
||||
2011-02-23 Jie Zhang <jie@codesourcery.com>
|
||||
|
||||
PR rtl-optimization/47763
|
||||
|
@ -154,7 +159,7 @@
|
|||
PR objc/47784
|
||||
* objc.dg/property/dotsyntax-22.m: New.
|
||||
* obj-c++.dg/property/dotsyntax-22.mm: New.
|
||||
|
||||
|
||||
2011-02-20 Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
PR c++/46394
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
// PR c++/47242
|
||||
// { dg-options "-std=c++0x" }
|
||||
|
||||
template < typename > void
|
||||
bar ()
|
||||
{
|
||||
[i]{}; // { dg-error "declared|invalid" }
|
||||
}
|
||||
|
||||
void
|
||||
foo ()
|
||||
{
|
||||
bar<int>();
|
||||
}
|
Loading…
Reference in New Issue