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 }
|
// This one check for objects being destroyed twice. The bug it is
|
// This one check for objects being destroyed twice. The bug it is
|
// looking for is the extra dtor call on C() even though it is never
|
// looking for is the extra dtor call on C() even though it is never
|
// built.
|
// built.
|
// prms-id: 783
|
// prms-id: 783
|
|
|
extern "C" int printf (const char *, ...);
|
extern "C" int printf (const char *, ...);
|
extern "C" void exit (int);
|
extern "C" void exit (int);
|
|
|
class C {
|
class C {
|
int i;
|
int i;
|
public:
|
public:
|
// C() {printf ("C ctor at %x\n", this);}
|
// C() {printf ("C ctor at %x\n", this);}
|
// ~C() {printf ("C dtor at %x\n", this);}
|
// ~C() {printf ("C dtor at %x\n", this);}
|
C() {
|
C() {
|
i = 1;
|
i = 1;
|
}
|
}
|
~C() {
|
~C() {
|
if (i != 1) {
|
if (i != 1) {
|
exit(1);
|
exit(1);
|
}
|
}
|
i = 0;
|
i = 0;
|
}
|
}
|
};
|
};
|
|
|
C g;
|
C g;
|
|
|
C func() {
|
C func() {
|
return g;
|
return g;
|
}
|
}
|
|
|
int main(int argc, char**argv) {
|
int main(int argc, char**argv) {
|
C c,d;
|
C c,d;
|
// printf ("\n");
|
// printf ("\n");
|
c = (argc != 1) ? C() : d;
|
c = (argc != 1) ? C() : d;
|
// printf ("\n");
|
// printf ("\n");
|
return 0;
|
return 0;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.