OSDN Git Service

2012-12-15 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / pubtypes.C
1 /* Radar 4535968 */
2 /* { dg-do compile { target *-*-darwin* } } */
3 /* { dg-options "-O0 -gdwarf-2 -dA -fno-eliminate-unused-debug-types" } */
4 /* { dg-final { scan-assembler "__debug_pubtypes" } } */
5 /* { dg-final { scan-assembler "long+\[ \t\]+\(0x\)?\[0-9a-f]+\[ \t\n\]+\[#;@]+\[ \t\]+Length of Public Type Names Info" } } */
6 /* { dg-final { scan-assembler "\"empty\\\\0\"+\[ \t\]+\[#;@]+\[ \t\]+external name" } } */
7 /* { dg-final { scan-assembler "\"A\\\\0\"+\[ \t\]+\[#;@]+\[ \t\]+external name" } } */
8 /* { dg-final { scan-assembler "\"B\\\\0\"+\[ \t\]+\[#;@]+\[ \t\]+external name" } } */
9
10
11 struct A
12 {
13   virtual ~A ();
14   int a1;
15 };
16
17 A::~A()
18 {
19   a1 = 800;
20 }
21
22 struct B : public A
23 {
24   virtual ~B ();
25   int b1;
26   int b2;
27 };
28
29 B::~B()
30 {
31   a1 = 900;
32   b1 = 901;
33   b2 = 902;
34 }
35
36 // Stop the compiler from optimizing away data.
37 void refer (A *)
38 {
39   ;
40 }
41
42 struct empty {};
43
44 // Stop the compiler from optimizing away data.
45 void refer (empty *)
46 {
47   ;
48 }
49
50 int main (void)
51 {
52   A alpha, *aap, *abp;
53   B beta, *bbp;
54   empty e;
55
56   alpha.a1 = 100;
57   beta.a1 = 200; beta.b1 = 201; beta.b2 = 202;
58
59   aap = &alpha; refer (aap);
60   abp = &beta;  refer (abp);
61   bbp = &beta;  refer (bbp);
62   refer (&e);
63
64   return 0;  // marker return 0
65 } // marker close brace