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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.old-deja/] [g++.other/] [dyncast6.C] - Blame information for rev 699

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 699 jeremybenn
// { dg-do run  }
2
// { dg-options "-w -ansi -pedantic-errors" }
3
 
4
// Copyright (C) 2000 Free Software Foundation, Inc.
5
// Contributed by Nathan Sidwell 20 June 2000 
6
 
7
// Origin GNATS bug report 143 from Carlo Wood 
8
// We were generating incorrect type_info structures, and hence breaking
9
// dynamic_cast.
10
 
11
#include 
12
 
13
class OBASE { public: virtual void bz () {}};
14
class IBASE { public: virtual void by () {}};
15
 
16
class V {public:int m; };
17
 
18
class A : public virtual V { };
19
class AA : public A {};
20
 
21
class B : public OBASE, public A { public: virtual void foo(void) { } };
22
class B1 : public OBASE, public AA { public: virtual void foo(void) { } };
23
 
24
class C : public IBASE, public virtual V { };
25
 
26
class D : public B, public C { };
27
 
28
class E : public B, public virtual V { };
29
 
30
class E1 : public B1, public virtual V {};
31
 
32
class E2 : public B1, public A, public virtual V {};
33
 
34
int main(void)
35
{
36
  D d;
37
  E e;
38
  E1 e1;
39
  E2 e2;
40
  int code = 0;
41
 
42
  OBASE* osd = &d;
43
  OBASE* ose = &e;
44
  OBASE* ose1 = &e1;
45
  OBASE* ose2 = &e2;
46
 
47
 
48
  if (!dynamic_cast(osd))
49
    {
50
      printf ("fail osd\n");
51
      code++;
52
    }
53
 
54
  if (!dynamic_cast(ose))
55
    {
56
      printf ("fail ose\n");
57
      code++;
58
    }
59
 
60
  if (!dynamic_cast(ose1))
61
    {
62
      printf ("fail ose1\n");
63
      code++;
64
    }
65
 
66
  if (!dynamic_cast(ose2))
67
    {
68
      printf ("fail ose2\n");
69
      code++;
70
    }
71
 
72
  return code;
73
}

powered by: WebSVN 2.1.0

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