annotate gcc/testsuite/g++.old-deja/g++.mike/p789a.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do run }
kono
parents:
diff changeset
2 // global and local multidimensional array objects are not getting
kono
parents:
diff changeset
3 // constructors called on any dimension, other than the first. Also,
kono
parents:
diff changeset
4 // the destructors are not being called. Seems odd, they probably
kono
parents:
diff changeset
5 // used to work. :-(
kono
parents:
diff changeset
6 // prms-id: 789
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 extern "C" int printf (const char *, ...);
kono
parents:
diff changeset
9 struct foo
kono
parents:
diff changeset
10 {
kono
parents:
diff changeset
11 static int count;
kono
parents:
diff changeset
12 void print (int i, int j) { printf ("foo[%d][%d] = %d\n", i, j, x); }
kono
parents:
diff changeset
13 int x;
kono
parents:
diff changeset
14 foo () {
kono
parents:
diff changeset
15 x = count++;
kono
parents:
diff changeset
16 printf("this %d = %x\n", x, (void *)this);
kono
parents:
diff changeset
17 }
kono
parents:
diff changeset
18 virtual ~foo () {
kono
parents:
diff changeset
19 printf("this %d = %x\n", x, (void *)this);
kono
parents:
diff changeset
20 --count;
kono
parents:
diff changeset
21 }
kono
parents:
diff changeset
22 };
kono
parents:
diff changeset
23 int foo::count;
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 int main ()
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 {
kono
parents:
diff changeset
29 foo array[3][3];
kono
parents:
diff changeset
30 for (int i = 0; i < 3; i++)
kono
parents:
diff changeset
31 {
kono
parents:
diff changeset
32 for (int j = 0; j < 3; j++)
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]);
kono
parents:
diff changeset
35 }
kono
parents:
diff changeset
36 }
kono
parents:
diff changeset
37 // The count should be nine, if not, fail the test.
kono
parents:
diff changeset
38 if (foo::count != 9)
kono
parents:
diff changeset
39 return 1;
kono
parents:
diff changeset
40 }
kono
parents:
diff changeset
41 if (foo::count != 0)
kono
parents:
diff changeset
42 return 1;
kono
parents:
diff changeset
43 return 0;
kono
parents:
diff changeset
44 }