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

Subversion Repositories openrisc

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 699 jeremybenn
// { dg-do run  }
2
// GROUPS passed vtable
3
extern "C" int printf (const char *, ...);
4
extern "C" void exit(int);
5
 
6
class A {
7
public:
8
  virtual const char* f1() { return "A::f1"; }
9
  virtual const char* f2() { return "A::f2"; }
10
  virtual const char* f3() { printf("FAIL\n"); exit(1); return "A::f3"; }
11
};
12
 
13
class B {
14
public:
15
  virtual const char* f2() { return "B::f2"; }
16
  virtual const char* f3() { return "B::f3"; }
17
};
18
 
19
class C: public A, public B {
20
public:
21
  const char* f2() { return B::f2(); }
22
  const char* f1() { return f2(); }
23
  const char* f3() { return A::f3(); }
24
};
25
 
26
class D: public A, public B {
27
public:
28
  const char* f2() { return B::f2(); }
29
  const char* f1() { return D :: f2(); }
30
  const char* f3() { return A::f3(); }
31
};
32
 
33
int main() {
34
  C* tempC = new C;
35
  D* tempD = new D;
36
  A* a = tempC;
37
  printf("calling f1 on a C gives %s\n", a->f1());
38
  a = tempD;
39
  printf("calling f1 on a D gives %s\n", a->f1());
40
  printf("PASS\n");
41
  return 0;
42
}

powered by: WebSVN 2.1.0

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