URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 305 |
Rev 338 |
// { dg-do run }
|
// { dg-do run }
|
// { dg-options "-O2" }
|
// { dg-options "-O2" }
|
// Testcase for order of destruction.
|
// Testcase for order of destruction.
|
|
|
extern "C" int printf (const char *, ...);
|
extern "C" int printf (const char *, ...);
|
int c;
|
int c;
|
int r;
|
int r;
|
|
|
struct B {
|
struct B {
|
B();
|
B();
|
B( B const& );
|
B( B const& );
|
~B();
|
~B();
|
};
|
};
|
|
|
struct A {
|
struct A {
|
A();
|
A();
|
A( A const& );
|
A( A const& );
|
~A();
|
~A();
|
operator B ();
|
operator B ();
|
};
|
};
|
|
|
inline A::operator B () { printf( "operator B ()\n"); return B(); }
|
inline A::operator B () { printf( "operator B ()\n"); return B(); }
|
|
|
A f();
|
A f();
|
void g( B const& );
|
void g( B const& );
|
|
|
int
|
int
|
main()
|
main()
|
{
|
{
|
g( f() );
|
g( f() );
|
return r;
|
return r;
|
}
|
}
|
|
|
B::B() { printf( "B::B()\n" ); if (++c != 2) r = 1; }
|
B::B() { printf( "B::B()\n" ); if (++c != 2) r = 1; }
|
B::B( B const& ) { printf( "B::B( B const& )\n" ); r = 1; }
|
B::B( B const& ) { printf( "B::B( B const& )\n" ); r = 1; }
|
B::~B() { printf( "B::~B()\n" ); if (--c != 1) r = 1; }
|
B::~B() { printf( "B::~B()\n" ); if (--c != 1) r = 1; }
|
|
|
A::A() { printf( "A::A()\n" ); if (++c != 1) r = 1; }
|
A::A() { printf( "A::A()\n" ); if (++c != 1) r = 1; }
|
A::A( A const& ) { printf( "A::A( A const& )\n" ); r = 1; }
|
A::A( A const& ) { printf( "A::A( A const& )\n" ); r = 1; }
|
A::~A() { printf( "A::~A()\n" ); if (--c != 0) r = 1; }
|
A::~A() { printf( "A::~A()\n" ); if (--c != 0) r = 1; }
|
|
|
A f() { printf( "f()\n"); return A(); }
|
A f() { printf( "f()\n"); return A(); }
|
void g( B const& ) { printf( "g()\n"); }
|
void g( B const& ) { printf( "g()\n"); }
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.