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

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [g++.old-deja/] [g++.other/] [pmf4.C] - Diff between revs 305 and 338

Only display areas with differences | Details | Blame | View Log

Rev 305 Rev 338
// { dg-do run  }
// { dg-do run  }
// Bug: g++ doesn't compensate for finding a virtual function in a
// Bug: g++ doesn't compensate for finding a virtual function in a
// non-primary vtable when generating PMFs.
// non-primary vtable when generating PMFs.
// Submitted by Jason Merrill 
// Submitted by Jason Merrill 
struct A {
struct A {
  virtual ~A() {}
  virtual ~A() {}
};
};
struct B {
struct B {
  virtual void f () = 0;
  virtual void f () = 0;
};
};
struct C : public A, public B {
struct C : public A, public B {
  void f ();
  void f ();
};
};
void (C::* B_f)() = &B::f;   // this works
void (C::* B_f)() = &B::f;   // this works
void (C::* C_f)() = &C::f;   // this breaks
void (C::* C_f)() = &C::f;   // this breaks
C* p;
C* p;
void C::f ()
void C::f ()
{
{
  p = this;
  p = this;
}
}
int main()
int main()
{
{
  C c;
  C c;
  (c.*B_f)();
  (c.*B_f)();
  if (p != &c)
  if (p != &c)
    return 1;
    return 1;
  (c.*C_f)();
  (c.*C_f)();
  if (p != &c)
  if (p != &c)
    return 1;
    return 1;
}
}
 
 

powered by: WebSVN 2.1.0

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