URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 305 |
Rev 338 |
// { dg-do run }
|
// { dg-do run }
|
// GROUPS passed destructors
|
// GROUPS passed destructors
|
// Check that when an object of a derived class is (implicitly)
|
// Check that when an object of a derived class is (implicitly)
|
// destructed (on exit from the block in which it is declared)
|
// destructed (on exit from the block in which it is declared)
|
// that the destructor for the base class also gets executed.
|
// that the destructor for the base class also gets executed.
|
//
|
//
|
// (also check that this execution doesn't seg-fault)
|
// (also check that this execution doesn't seg-fault)
|
|
|
extern "C" int printf (const char *, ...);
|
extern "C" int printf (const char *, ...);
|
|
|
int derived_destructed;
|
int derived_destructed;
|
int base_destructed;
|
int base_destructed;
|
|
|
struct base {
|
struct base {
|
int base_data_member;
|
int base_data_member;
|
|
|
base()
|
base()
|
{
|
{
|
base_data_member = 0x5e5e;
|
base_data_member = 0x5e5e;
|
}
|
}
|
~base()
|
~base()
|
{
|
{
|
base_destructed = 0x781f;
|
base_destructed = 0x781f;
|
}
|
}
|
};
|
};
|
|
|
struct derived : public base {
|
struct derived : public base {
|
int derived_data_member;
|
int derived_data_member;
|
|
|
derived()
|
derived()
|
{
|
{
|
derived_data_member = 0xe5e5;
|
derived_data_member = 0xe5e5;
|
}
|
}
|
~derived()
|
~derived()
|
{
|
{
|
derived_destructed = 0xf178;
|
derived_destructed = 0xf178;
|
}
|
}
|
};
|
};
|
|
|
|
|
void test2 ();
|
void test2 ();
|
|
|
int main ()
|
int main ()
|
{
|
{
|
test2 ();
|
test2 ();
|
if ((base_destructed != 0x781f) || (derived_destructed != 0xf178))
|
if ((base_destructed != 0x781f) || (derived_destructed != 0xf178))
|
{ printf ("FAIL\n"); return 1; }
|
{ printf ("FAIL\n"); return 1; }
|
else
|
else
|
printf ("PASS\n");
|
printf ("PASS\n");
|
}
|
}
|
|
|
void test2 ()
|
void test2 ()
|
{
|
{
|
derived derived_object;
|
derived derived_object;
|
|
|
derived_object.derived_data_member = 99;
|
derived_object.derived_data_member = 99;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.