1/* This testcase is part of GDB, the GNU debugger.
2
3   Copyright 2003, 2004, 2007 Free Software Foundation, Inc.
4
5   This program is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17   */
18
19struct A
20{
21  virtual ~A ();
22  int a1;
23};
24
25A::~A()
26{
27  a1 = 800;
28}
29
30struct B : public A
31{
32  virtual ~B ();
33  int b1;
34  int b2;
35};
36
37B::~B()
38{
39  a1 = 900;
40  b1 = 901;
41  b2 = 902;
42}
43
44// Stop the compiler from optimizing away data.
45void refer (A *)
46{
47  ;
48}
49
50struct empty {};
51
52// Stop the compiler from optimizing away data.
53void refer (empty *)
54{
55  ;
56}
57
58int main (void)
59{
60  A alpha, *aap, *abp;
61  B beta, *bbp;
62  empty e;
63
64  alpha.a1 = 100;
65  beta.a1 = 200; beta.b1 = 201; beta.b2 = 202;
66
67  aap = &alpha; refer (aap);
68  abp = &beta;  refer (abp);
69  bbp = &beta;  refer (bbp);
70  refer (&e);
71
72  return 0;  // marker return 0
73} // marker close brace
74