OSDN Git Service

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