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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.old-deja/] [g++.brendan/] [copy5.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 copy-ctors
3
/*
4
bad:
5
sibelius402> a.out
6
a=5  a.virtMember()=30
7
BaseClass::Increm --> {i=5, virtMember()=30}
8
a=7  a.virtMember()=30
9
b=7  b.virtMember()=30
10
BaseClass::Increm --> {i=7, virtMember()=999}
11
b=9  b.virtMember()=30
12
sibelius403>
13
 
14
 good:
15
 
16
sibelius406> a.out
17
a=5  a.virtMember()=30
18
BaseClass::Increm --> {i=5, virtMember()=30}
19
a=7  a.virtMember()=30
20
b=7  b.virtMember()=30
21
BaseClass::Increm --> {i=7, virtMember()=30}
22
b=9  b.virtMember()=30
23
*/
24
 
25
extern "C" int printf (const char *, ...);
26
extern "C" void exit (int);
27
 
28
void die () { printf ("FAIL\n"); exit (1); }
29
 
30
class BaseClass {
31
 
32
  friend int operator != (const BaseClass irv, int x);
33
 
34
  int i;
35
 
36
public:
37
 
38
  BaseClass( const BaseClass& ir ) : i(ir.i) {}
39
  BaseClass() : i(5) {}
40
 
41
  virtual int virtMember() { return( 999 ); }
42
 
43
  void Increm( int r );
44
};
45
 
46
void BaseClass::Increm( int r )
47
{
48
  if ((i == 5 && virtMember () == 30)
49
      || (i == 7 && virtMember () == 30))
50
    i += r;
51
  else
52
    die ();
53
}
54
 
55
class DerivedClass : public BaseClass {
56
public:
57
  int virtMember() { return( 30 ); }
58
};
59
 
60
int operator != (const BaseClass irv, int x) { return irv.i != x; }
61
 
62
int
63
main ()
64
{
65
    DerivedClass a;
66
 
67
    if (a != 5 || a.virtMember () != 30)
68
      die ();
69
 
70
    a.Increm(2);
71
 
72
    if (a != 7 || a.virtMember () != 30)
73
      die ();
74
 
75
    DerivedClass b = a;
76
 
77
    if (b != 7 || a.virtMember () != 30)
78
      die ();
79
 
80
    b.Increm(2);
81
 
82
    if (b != 9 || a.virtMember () != 30)
83
      die ();
84
 
85
    printf ("PASS\n");
86
}

powered by: WebSVN 2.1.0

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