http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
[official-gcc.git] / gcc / testsuite / g++.dg / pubtypes.C
bloba17ad208ed6b4f847c3be461fedf741ae2ee95f4
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" } } */
10 struct A
12   virtual ~A ();
13   int a1;
16 A::~A()
18   a1 = 800;
21 struct B : public A
23   virtual ~B ();
24   int b1;
25   int b2;
28 B::~B()
30   a1 = 900;
31   b1 = 901;
32   b2 = 902;
35 // Stop the compiler from optimizing away data.
36 void refer (A *)
38   ;
41 struct empty {};
43 // Stop the compiler from optimizing away data.
44 void refer (empty *)
46   ;
49 int main (void)
51   A alpha, *aap, *abp;
52   B beta, *bbp;
53   empty e;
55   alpha.a1 = 100;
56   beta.a1 = 200; beta.b1 = 201; beta.b2 = 202;
58   aap = α refer (aap);
59   abp = β  refer (abp);
60   bbp = β  refer (bbp);
61   refer (&e);
63   return 0;  // marker return 0
64 } // marker close brace