re PR c++/84874 (internal compiler error: in reshape_init_class, at cp/decl.c:5800)
authorJakub Jelinek <jakub@redhat.com>
Fri, 16 Mar 2018 08:44:56 +0000 (09:44 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 16 Mar 2018 08:44:56 +0000 (09:44 +0100)
PR c++/84874
* g++.dg/cpp2a/desig8.C: New test.

From-SVN: r258588

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp2a/desig8.C [new file with mode: 0644]

index 4c03ff22ea7f1fd1d18a36f377e38555f4e64bca..fdaa02393382dc5d21eaf5927e1df2e7dae9ac14 100644 (file)
@@ -1,12 +1,15 @@
 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
 
+       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  <mark.doffman@codethink.co.uk>
+2018-03-16  Mark Doffman  <mark.doffman@codethink.co.uk>
             Jim MacArthur  <jim.macarthur@codethink.co.uk>
 
        * 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 (file)
index 0000000..d00d86f
--- /dev/null
@@ -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 ();
+}