1 // PR c++/89336
2 // { dg-do compile { target c++14 } }
3 
4 constexpr int
foo()5 foo ()
6 {
7   int a[16] = {};
8   int r = 0;
9   a[15] = a[14] = a[13] = a[12] = a[11] = a[10] = a[9] = a[8]
10     = a[7] = a[6] = a[5] = a[4] = a[3] = a[2] = a[1] = a[0] = 5;
11   for (int i = 0; i < 16; ++i)
12     r += a[i];
13   return r;
14 }
15 
16 static_assert (foo () == 16 * 5, "");
17 
18 struct A { int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p; };
19 
20 constexpr int
bar()21 bar ()
22 {
23   A a {};
24   a.p = a.o = a.n = a.m = a.l = a.k = a.j = a.i
25     = a.h = a.g = a.f = a.e = a.d = a.c = a.b = a.a = 8;
26   return a.a + a.b + a.c + a.d + a.e + a.f + a.g + a.h
27 	 + a.i + a.j + a.k + a.l + a.m + a.n + a.o + a.p;
28 }
29 
30 static_assert (bar () == 16 * 8, "");
31 
32 constexpr int
baz()33 baz ()
34 {
35   int a[16] = {};
36   int r = 0;
37   a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = a[6] = a[7]
38     = a[8] = a[9] = a[10] = a[11] = a[12] = a[13] = a[14] = a[15] = 7;
39   for (int i = 0; i < 16; ++i)
40     r += a[i];
41   return r;
42 }
43 
44 static_assert (baz () == 16 * 7, "");
45 
46 constexpr int
qux()47 qux ()
48 {
49   A a {};
50   a.a = a.b = a.c = a.d = a.e = a.f = a.g = a.h
51     = a.i = a.j = a.k = a.l = a.m = a.n = a.o = a.p = 6;
52   return a.a + a.b + a.c + a.d + a.e + a.f + a.g + a.h
53 	 + a.i + a.j + a.k + a.l + a.m + a.n + a.o + a.p;
54 }
55 
56 static_assert (qux () == 16 * 6, "");
57