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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.20.1/] [ld/] [testsuite/] [ld-selective/] [3.cc] - Rev 359

Go to most recent revision | Compare with Previous | Blame | View Log

struct A
{
  virtual void foo();
  virtual void bar();
};
 
void A::foo() { }			// keep
void A::bar() { }			// lose
 
struct B : public A
{
  virtual void foo();
};
 
void B::foo() { }			// keep
 
void _start() __asm__("_start"); // keep
void start() __asm__("start"); // some toolchains use this name.
 
A a;					// keep
B b;
A *getme() { return &a; }		// keep
 
void _start()
{
  getme()->foo();
#ifdef __GNUC__
#if (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
// gcc-2.95.2 gets this test wrong, and loses B::foo().
// Cheat.  After all, we aren't trying to test the compiler here.
  b.foo();
#endif
#endif
}
 
void start ()
{
  _start ();
}
 
// In addition, keep A's virtual table.
 
// We'll wind up keeping `b' and thus B's virtual table because
// `a' and `b' are both referenced from the constructor function.
 
extern "C" void __main() { }
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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