OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gdb/] [gdb-6.8/] [gdb-6.8.openrisc-2.1/] [gdb/] [testsuite/] [gdb.cp/] [rtti1.cc] - Blame information for rev 24

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 24 jeremybenn
/* Code to go along with tests in rtti.exp.
2
 
3
   Copyright 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
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
12
   the Free Software Foundation; either version 3 of the License, or
13
   (at your option) any later version.
14
 
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.
19
 
20
   You should have received a copy of the GNU General Public License
21
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
22
 
23
#include "rtti.h"
24
 
25
namespace 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
 
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.
59
void refer_to (n2::C2 *obj)
60
{
61
  // Do nothing.
62
}
63
 
64
void refer_to (n2::n3::C3 *obj)
65
{
66
  // Do nothing.
67
}
68
 
69
namespace n2
70
{
71
  void func ()
72
  {
73
    C2 *obj = create2 ();
74
 
75
    refer_to (obj);             // func-constructs-done
76
 
77
    return;
78
  }
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
  }
91
}
92
 
93
int main()
94
{
95
    using namespace n1;
96
    using namespace n2;
97
 
98
    C1 *e1 = create1();
99
    C2 *e2 = create2();
100
 
101
    n2::func();                         // main-constructs-done
102
    n2::n3::func3();
103
 
104
    return 0;
105
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.