From f664274af964fa1528b4be41f534ebb79c5a6a32 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 16 Mar 2018 09:44:56 +0100 Subject: [PATCH] re PR c++/84874 (internal compiler error: in reshape_init_class, at cp/decl.c:5800) PR c++/84874 * g++.dg/cpp2a/desig8.C: New test. From-SVN: r258588 --- gcc/testsuite/ChangeLog | 5 ++++- gcc/testsuite/g++.dg/cpp2a/desig8.C | 31 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp2a/desig8.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4c03ff22ea7..fdaa0239338 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,12 +1,15 @@ 2018-03-16 Jakub Jelinek + PR c++/84874 + * g++.dg/cpp2a/desig8.C: New test. + PR tree-optimization/84841 * gcc.dg/pr84841.c: New test. PR c++/84874 * g++.dg/cpp2a/desig7.C: New test. -03-16-2018 Mark Doffman +2018-03-16 Mark Doffman Jim MacArthur * gfortran.dg/automatic_1.f90: New test. diff --git a/gcc/testsuite/g++.dg/cpp2a/desig8.C b/gcc/testsuite/g++.dg/cpp2a/desig8.C new file mode 100644 index 00000000000..d00d86f4403 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/desig8.C @@ -0,0 +1,31 @@ +// PR c++/84874 +// { dg-do run { target c++17 } } +// { dg-options "" } + +struct A { int a; struct { int b; }; }; +struct B { A d; }; + +void +foo (B *x) +{ + *x = { .d = { .b = 5 } }; +} + +void +bar (A *x) +{ + *x = { .b = 6 }; +} + +int +main () +{ + B b = { { 2, 3 } }; + foo (&b); + if (b.d.a != 0 || b.d.b != 5) + __builtin_abort (); + b.d.a = 8; + bar (&b.d); + if (b.d.a != 0 || b.d.b != 6) + __builtin_abort (); +} -- 2.30.2