]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.cp/rtti1.cc
Update copyright year range in all GDB files.
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.cp / rtti1.cc
CommitLineData
58da2eb2
DC
1/* Code to go along with tests in rtti.exp.
2
b811d2c2 3 Copyright 2003-2020 Free Software Foundation, Inc.
58da2eb2
DC
4
5 Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
6 Inc.
7
8 This file is part of GDB.
9
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
a9762ec7
JB
12 the Free Software Foundation; either version 3 of the License, or
13 (at your option) any later version.
58da2eb2 14
a9762ec7
JB
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
58da2eb2
DC
19
20 You should have received a copy of the GNU General Public License
a9762ec7 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */
58da2eb2
DC
22
23#include "rtti.h"
24
25namespace n1 {
26
27 class C1;
28
29 class Base1 {
30 public:
31 virtual ~Base1() { }
32 };
33
34
35 class C1: public Base1 {
36 public:
37 };
38
39 class D1 : public C1{
40 public:
41 D1(C1 *, C1 *);
42
43 C1* expr_1_;
44 C1* expr_2_;
45 };
46
47 D1::D1(C1 *expr_1, C1 *expr_2)
48 : expr_1_(expr_1), expr_2_(expr_2) { }
49
50 C1 *create1() {
51 return new D1(0, 0);
52 }
53
54} // n1
55
b368761e
DC
56// NOTE: carlton/2004-01-23: This call exists only to convince GCC to
57// keep around a reference to 'obj' in n2::func - GCC 3.4 had been
58// optimizing it away.
59void refer_to (n2::C2 *obj)
60{
61 // Do nothing.
62}
63
1198ecbe
DC
64void refer_to (n2::n3::C3 *obj)
65{
66 // Do nothing.
67}
68
b368761e
DC
69namespace n2
70{
71 void func ()
72 {
73 C2 *obj = create2 ();
74
1198ecbe 75 refer_to (obj); // func-constructs-done
b368761e
DC
76
77 return;
78 }
1198ecbe
DC
79
80 namespace n3
81 {
82 void func3 ()
83 {
84 C3 *obj3 = create3 ();
85
86 refer_to (obj3); // func3-constructs-done
87
88 return;
89 }
90 }
b368761e
DC
91}
92
58da2eb2
DC
93int main()
94{
95 using namespace n1;
96 using namespace n2;
97
98 C1 *e1 = create1();
99 C2 *e2 = create2();
100
b368761e 101 n2::func(); // main-constructs-done
1198ecbe 102 n2::n3::func3();
b368761e
DC
103
104 return 0;
58da2eb2 105}