c++: prvalue of array type [PR111286]
[official-gcc.git] / gcc / testsuite / c-c++-common / torture / builtin-clear-padding-4.c
blob9cb202fc690b5372564fc4c659c43667ef8400f9
1 /* { dg-require-effective-target alloca } */
3 /* PR libstdc++/88101 */
5 struct S { char a; short b; char c; };
7 __attribute__((noipa)) void
8 foo (int m, int n, int o)
10 long double a1[m];
11 long double a2[m];
12 struct S b1[m][n];
13 struct S b2[m][n];
14 struct S c1[m][n][o];
15 struct S c2[m][n][o];
16 int i, j, k;
17 __builtin_memset (&a1, 0, sizeof (a1));
18 __builtin_memset (&a2, ~0, sizeof (a2));
19 __builtin_memset (&b1, 0, sizeof (b1));
20 __builtin_memset (&b2, ~0, sizeof (b2));
21 __builtin_memset (&c1, 0, sizeof (c1));
22 __builtin_memset (&c2, ~0, sizeof (c2));
23 for (i = 0; i < m; i++)
25 a1[i] = 13.132L;
26 a2[i] = 13.132L;
27 for (j = 0; j < n; j++)
29 b1[i][j].a = -1;
30 b1[i][j].b = -1;
31 b1[i][j].c = -1;
32 b2[i][j].a = -1;
33 b2[i][j].b = -1;
34 b2[i][j].c = -1;
35 for (k = 0; k < o; k++)
37 c1[i][j][k].a = -1;
38 c1[i][j][k].b = -1;
39 c1[i][j][k].c = -1;
40 c2[i][j][k].a = -1;
41 c2[i][j][k].b = -1;
42 c2[i][j][k].c = -1;
46 __builtin_clear_padding (&a2);
47 __builtin_clear_padding (&b2);
48 __builtin_clear_padding (&c2);
49 if (__builtin_memcmp (&a1, &a2, sizeof (a1))
50 || __builtin_memcmp (&b1, &b2, sizeof (b1))
51 || __builtin_memcmp (&c1, &c2, sizeof (c1)))
52 __builtin_abort ();
55 int
56 main ()
58 foo (5, 3, 4);
59 foo (17, 2, 1);
60 return 0;