PR c++/79461 - ICE with lambda in constexpr constructor

* constexpr.c (build_data_member_initialization): Ignore
	initialization of a local variable.

From-SVN: r245410
This commit is contained in:
Jason Merrill 2017-02-13 17:31:12 -05:00 committed by Jason Merrill
parent aa326bfb90
commit 8cb7aaa11b
3 changed files with 19 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2017-02-13 Jason Merrill <jason@redhat.com>
PR c++/79461 - ICE with lambda in constexpr constructor
* constexpr.c (build_data_member_initialization): Ignore
initialization of a local variable.
2017-02-13 Jakub Jelinek <jakub@redhat.com>
* init.c (warn_placement_new_too_small): Add missing space in

View file

@ -379,6 +379,9 @@ build_data_member_initialization (tree t, vec<constructor_elt, va_gc> **vec)
if (TREE_CODE (member) == COMPONENT_REF)
{
tree aggr = TREE_OPERAND (member, 0);
if (TREE_CODE (aggr) == VAR_DECL)
/* Initializing a local variable, don't add anything. */
return true;
if (TREE_CODE (aggr) != COMPONENT_REF)
/* Normal member initialization. */
member = TREE_OPERAND (member, 1);

View file

@ -0,0 +1,10 @@
// PR c++/79461
// { dg-options -std=c++1z }
struct S {
constexpr S(int i) {
auto f = [i]{};
}
};
int main() {}