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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.old-deja/] [g++.brendan/] [copy5.C] - Diff between revs 149 and 154

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 149 Rev 154
// { dg-do run  }
// { dg-do run  }
// GROUPS passed copy-ctors
// GROUPS passed copy-ctors
/*
/*
bad:
bad:
sibelius402> a.out
sibelius402> a.out
a=5  a.virtMember()=30
a=5  a.virtMember()=30
BaseClass::Increm --> {i=5, virtMember()=30}
BaseClass::Increm --> {i=5, virtMember()=30}
a=7  a.virtMember()=30
a=7  a.virtMember()=30
b=7  b.virtMember()=30
b=7  b.virtMember()=30
BaseClass::Increm --> {i=7, virtMember()=999}
BaseClass::Increm --> {i=7, virtMember()=999}
b=9  b.virtMember()=30
b=9  b.virtMember()=30
sibelius403>
sibelius403>
 good:
 good:
sibelius406> a.out
sibelius406> a.out
a=5  a.virtMember()=30
a=5  a.virtMember()=30
BaseClass::Increm --> {i=5, virtMember()=30}
BaseClass::Increm --> {i=5, virtMember()=30}
a=7  a.virtMember()=30
a=7  a.virtMember()=30
b=7  b.virtMember()=30
b=7  b.virtMember()=30
BaseClass::Increm --> {i=7, virtMember()=30}
BaseClass::Increm --> {i=7, virtMember()=30}
b=9  b.virtMember()=30
b=9  b.virtMember()=30
*/
*/
extern "C" int printf (const char *, ...);
extern "C" int printf (const char *, ...);
extern "C" void exit (int);
extern "C" void exit (int);
void die () { printf ("FAIL\n"); exit (1); }
void die () { printf ("FAIL\n"); exit (1); }
class BaseClass {
class BaseClass {
  friend int operator != (const BaseClass irv, int x);
  friend int operator != (const BaseClass irv, int x);
  int i;
  int i;
public:
public:
  BaseClass( const BaseClass& ir ) : i(ir.i) {};
  BaseClass( const BaseClass& ir ) : i(ir.i) {};
  BaseClass() : i(5) {};
  BaseClass() : i(5) {};
  virtual int virtMember() { return( 999 ); };
  virtual int virtMember() { return( 999 ); };
  void Increm( int r );
  void Increm( int r );
};
};
void BaseClass::Increm( int r )
void BaseClass::Increm( int r )
{
{
  if ((i == 5 && virtMember () == 30)
  if ((i == 5 && virtMember () == 30)
      || (i == 7 && virtMember () == 30))
      || (i == 7 && virtMember () == 30))
    i += r;
    i += r;
  else
  else
    die ();
    die ();
}
}
class DerivedClass : public BaseClass {
class DerivedClass : public BaseClass {
public:
public:
  int virtMember() { return( 30 ); };
  int virtMember() { return( 30 ); };
};
};
int operator != (const BaseClass irv, int x) { return irv.i != x; }
int operator != (const BaseClass irv, int x) { return irv.i != x; }
int
int
main ()
main ()
{
{
    DerivedClass a;
    DerivedClass a;
    if (a != 5 || a.virtMember () != 30)
    if (a != 5 || a.virtMember () != 30)
      die ();
      die ();
    a.Increm(2);
    a.Increm(2);
    if (a != 7 || a.virtMember () != 30)
    if (a != 7 || a.virtMember () != 30)
      die ();
      die ();
    DerivedClass b = a;
    DerivedClass b = a;
    if (b != 7 || a.virtMember () != 30)
    if (b != 7 || a.virtMember () != 30)
      die ();
      die ();
    b.Increm(2);
    b.Increm(2);
    if (b != 9 || a.virtMember () != 30)
    if (b != 9 || a.virtMember () != 30)
      die ();
      die ();
    printf ("PASS\n");
    printf ("PASS\n");
}
}
 
 

powered by: WebSVN 2.1.0

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