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:
parent
aa326bfb90
commit
8cb7aaa11b
3 changed files with 19 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
10
gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.C
Normal file
10
gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.C
Normal file
|
@ -0,0 +1,10 @@
|
|||
// PR c++/79461
|
||||
// { dg-options -std=c++1z }
|
||||
|
||||
struct S {
|
||||
constexpr S(int i) {
|
||||
auto f = [i]{};
|
||||
}
|
||||
};
|
||||
int main() {}
|
||||
|
Loading…
Add table
Reference in a new issue